﻿2026-06-21T03:31:34.5506968Z ##[group]Run ./traceable-reqs check --json
2026-06-21T03:31:34.5507346Z [36;1m./traceable-reqs check --json[0m
2026-06-21T03:31:34.5520150Z shell: /usr/bin/bash -e {0}
2026-06-21T03:31:34.5520411Z ##[endgroup]
2026-06-21T03:31:34.6162137Z {
2026-06-21T03:31:34.6162927Z   "schemaVersion": 1,
2026-06-21T03:31:34.6163418Z   "summary": {
2026-06-21T03:31:34.6163875Z     "requirementCount": 275,
2026-06-21T03:31:34.6164358Z     "completeCount": 275,
2026-06-21T03:31:34.6164793Z     "incompleteCount": 0,
2026-06-21T03:31:34.6165211Z     "findingCount": 0
2026-06-21T03:31:34.6165617Z   },
2026-06-21T03:31:34.6165966Z   "requirements": [
2026-06-21T03:31:34.6166371Z     {
2026-06-21T03:31:34.6167143Z       "id": "REQ-API-1",
2026-06-21T03:31:34.6167684Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T03:31:34.6168198Z       "requiredStages": [
2026-06-21T03:31:34.6168513Z         "impl",
2026-06-21T03:31:34.6168814Z         "unit",
2026-06-21T03:31:34.6169314Z         "int"
2026-06-21T03:31:34.6169700Z       ],
2026-06-21T03:31:34.6169995Z       "stages": {
2026-06-21T03:31:34.6170303Z         "doc": {
2026-06-21T03:31:34.6170622Z           "complete": false,
2026-06-21T03:31:34.6170975Z           "evidence": []
2026-06-21T03:31:34.6171303Z         },
2026-06-21T03:31:34.6171590Z         "impl": {
2026-06-21T03:31:34.6171919Z           "complete": true,
2026-06-21T03:31:34.6172253Z           "evidence": [
2026-06-21T03:31:34.6172577Z             {
2026-06-21T03:31:34.6172900Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6173305Z               "line": 15
2026-06-21T03:31:34.6173625Z             }
2026-06-21T03:31:34.6173925Z           ]
2026-06-21T03:31:34.6174221Z         },
2026-06-21T03:31:34.6174511Z         "int": {
2026-06-21T03:31:34.6174817Z           "complete": true,
2026-06-21T03:31:34.6175169Z           "evidence": [
2026-06-21T03:31:34.6175490Z             {
2026-06-21T03:31:34.6175853Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6176292Z               "line": 13
2026-06-21T03:31:34.6176607Z             }
2026-06-21T03:31:34.6176898Z           ]
2026-06-21T03:31:34.6177180Z         },
2026-06-21T03:31:34.6177461Z         "unit": {
2026-06-21T03:31:34.6177776Z           "complete": true,
2026-06-21T03:31:34.6178112Z           "evidence": [
2026-06-21T03:31:34.6178434Z             {
2026-06-21T03:31:34.6178788Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6179292Z               "line": 717
2026-06-21T03:31:34.6179612Z             },
2026-06-21T03:31:34.6179926Z             {
2026-06-21T03:31:34.6180251Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6180674Z               "line": 804
2026-06-21T03:31:34.6180996Z             }
2026-06-21T03:31:34.6181287Z           ]
2026-06-21T03:31:34.6181577Z         }
2026-06-21T03:31:34.6181868Z       }
2026-06-21T03:31:34.6182159Z     },
2026-06-21T03:31:34.6182450Z     {
2026-06-21T03:31:34.6182750Z       "id": "REQ-API-2",
2026-06-21T03:31:34.6183291Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T03:31:34.6183865Z       "requiredStages": [
2026-06-21T03:31:34.6184210Z         "impl",
2026-06-21T03:31:34.6184524Z         "unit",
2026-06-21T03:31:34.6184834Z         "int"
2026-06-21T03:31:34.6185129Z       ],
2026-06-21T03:31:34.6185430Z       "stages": {
2026-06-21T03:31:34.6185752Z         "doc": {
2026-06-21T03:31:34.6186065Z           "complete": false,
2026-06-21T03:31:34.6186422Z           "evidence": []
2026-06-21T03:31:34.6186757Z         },
2026-06-21T03:31:34.6187042Z         "impl": {
2026-06-21T03:31:34.6187381Z           "complete": true,
2026-06-21T03:31:34.6187725Z           "evidence": [
2026-06-21T03:31:34.6188045Z             {
2026-06-21T03:31:34.6188384Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.6188814Z               "line": 17
2026-06-21T03:31:34.6189208Z             },
2026-06-21T03:31:34.6189504Z             {
2026-06-21T03:31:34.6190115Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.6190549Z               "line": 20
2026-06-21T03:31:34.6190859Z             },
2026-06-21T03:31:34.6191167Z             {
2026-06-21T03:31:34.6191512Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.6191929Z               "line": 142
2026-06-21T03:31:34.6192262Z             },
2026-06-21T03:31:34.6192577Z             {
2026-06-21T03:31:34.6192925Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6193349Z               "line": 24
2026-06-21T03:31:34.6193668Z             },
2026-06-21T03:31:34.6193958Z             {
2026-06-21T03:31:34.6194474Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6194898Z               "line": 41
2026-06-21T03:31:34.6195231Z             },
2026-06-21T03:31:34.6195542Z             {
2026-06-21T03:31:34.6195894Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6196322Z               "line": 213
2026-06-21T03:31:34.6196663Z             },
2026-06-21T03:31:34.6196959Z             {
2026-06-21T03:31:34.6197297Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6197722Z               "line": 255
2026-06-21T03:31:34.6198047Z             },
2026-06-21T03:31:34.6198352Z             {
2026-06-21T03:31:34.6198700Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6199203Z               "line": 334
2026-06-21T03:31:34.6199530Z             },
2026-06-21T03:31:34.6199835Z             {
2026-06-21T03:31:34.6200174Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6200600Z               "line": 397
2026-06-21T03:31:34.6200928Z             },
2026-06-21T03:31:34.6201248Z             {
2026-06-21T03:31:34.6201600Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6202025Z               "line": 436
2026-06-21T03:31:34.6202345Z             },
2026-06-21T03:31:34.6202655Z             {
2026-06-21T03:31:34.6203012Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6203476Z               "line": 17
2026-06-21T03:31:34.6203800Z             },
2026-06-21T03:31:34.6204029Z             {
2026-06-21T03:31:34.6204296Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6204590Z               "line": 30
2026-06-21T03:31:34.6204815Z             },
2026-06-21T03:31:34.6205024Z             {
2026-06-21T03:31:34.6205266Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6205543Z               "line": 63
2026-06-21T03:31:34.6205759Z             },
2026-06-21T03:31:34.6205964Z             {
2026-06-21T03:31:34.6206211Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6206507Z               "line": 77
2026-06-21T03:31:34.6206730Z             }
2026-06-21T03:31:34.6206940Z           ]
2026-06-21T03:31:34.6207133Z         },
2026-06-21T03:31:34.6207334Z         "int": {
2026-06-21T03:31:34.6207557Z           "complete": true,
2026-06-21T03:31:34.6207809Z           "evidence": [
2026-06-21T03:31:34.6208034Z             {
2026-06-21T03:31:34.6208287Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6208597Z               "line": 14
2026-06-21T03:31:34.6208831Z             },
2026-06-21T03:31:34.6209107Z             {
2026-06-21T03:31:34.6209740Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6210143Z               "line": 187
2026-06-21T03:31:34.6210410Z             }
2026-06-21T03:31:34.6210634Z           ]
2026-06-21T03:31:34.6210859Z         },
2026-06-21T03:31:34.6211078Z         "unit": {
2026-06-21T03:31:34.6211325Z           "complete": true,
2026-06-21T03:31:34.6211616Z           "evidence": [
2026-06-21T03:31:34.6211864Z             {
2026-06-21T03:31:34.6212142Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.6212464Z               "line": 82
2026-06-21T03:31:34.6212719Z             },
2026-06-21T03:31:34.6212953Z             {
2026-06-21T03:31:34.6213454Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.6213787Z               "line": 279
2026-06-21T03:31:34.6214046Z             },
2026-06-21T03:31:34.6214265Z             {
2026-06-21T03:31:34.6214546Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6214875Z               "line": 709
2026-06-21T03:31:34.6215126Z             },
2026-06-21T03:31:34.6215356Z             {
2026-06-21T03:31:34.6215632Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6215966Z               "line": 720
2026-06-21T03:31:34.6216224Z             },
2026-06-21T03:31:34.6216456Z             {
2026-06-21T03:31:34.6216863Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6217188Z               "line": 873
2026-06-21T03:31:34.6217442Z             },
2026-06-21T03:31:34.6217674Z             {
2026-06-21T03:31:34.6217937Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6218270Z               "line": 919
2026-06-21T03:31:34.6218533Z             },
2026-06-21T03:31:34.6218742Z             {
2026-06-21T03:31:34.6219081Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6219381Z               "line": 143
2026-06-21T03:31:34.6219610Z             },
2026-06-21T03:31:34.6219829Z             {
2026-06-21T03:31:34.6220088Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.6220396Z               "line": 187
2026-06-21T03:31:34.6220631Z             }
2026-06-21T03:31:34.6220837Z           ]
2026-06-21T03:31:34.6221042Z         }
2026-06-21T03:31:34.6221246Z       }
2026-06-21T03:31:34.6221447Z     },
2026-06-21T03:31:34.6221658Z     {
2026-06-21T03:31:34.6221880Z       "id": "REQ-API-3",
2026-06-21T03:31:34.6222191Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T03:31:34.6222640Z       "requiredStages": [
2026-06-21T03:31:34.6223000Z         "impl",
2026-06-21T03:31:34.6223309Z         "unit",
2026-06-21T03:31:34.6223633Z         "int"
2026-06-21T03:31:34.6223957Z       ],
2026-06-21T03:31:34.6224248Z       "stages": {
2026-06-21T03:31:34.6224563Z         "doc": {
2026-06-21T03:31:34.6224897Z           "complete": false,
2026-06-21T03:31:34.6225264Z           "evidence": []
2026-06-21T03:31:34.6225593Z         },
2026-06-21T03:31:34.6225887Z         "impl": {
2026-06-21T03:31:34.6226225Z           "complete": true,
2026-06-21T03:31:34.6226579Z           "evidence": [
2026-06-21T03:31:34.6226907Z             {
2026-06-21T03:31:34.6227265Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.6227694Z               "line": 27
2026-06-21T03:31:34.6228027Z             },
2026-06-21T03:31:34.6228692Z             {
2026-06-21T03:31:34.6229332Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6229903Z               "line": 566
2026-06-21T03:31:34.6230417Z             }
2026-06-21T03:31:34.6230836Z           ]
2026-06-21T03:31:34.6231336Z         },
2026-06-21T03:31:34.6231797Z         "int": {
2026-06-21T03:31:34.6232284Z           "complete": true,
2026-06-21T03:31:34.6232789Z           "evidence": [
2026-06-21T03:31:34.6233248Z             {
2026-06-21T03:31:34.6233826Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6263988Z               "line": 261
2026-06-21T03:31:34.6264369Z             }
2026-06-21T03:31:34.6264669Z           ]
2026-06-21T03:31:34.6264956Z         },
2026-06-21T03:31:34.6265259Z         "unit": {
2026-06-21T03:31:34.6265602Z           "complete": true,
2026-06-21T03:31:34.6265959Z           "evidence": [
2026-06-21T03:31:34.6266283Z             {
2026-06-21T03:31:34.6266650Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.6267095Z               "line": 280
2026-06-21T03:31:34.6267439Z             },
2026-06-21T03:31:34.6267729Z             {
2026-06-21T03:31:34.6268119Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6268547Z               "line": 948
2026-06-21T03:31:34.6268885Z             }
2026-06-21T03:31:34.6269558Z           ]
2026-06-21T03:31:34.6269844Z         }
2026-06-21T03:31:34.6270130Z       }
2026-06-21T03:31:34.6270409Z     },
2026-06-21T03:31:34.6270685Z     {
2026-06-21T03:31:34.6270991Z       "id": "REQ-API-4",
2026-06-21T03:31:34.6273810Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T03:31:34.6276153Z       "requiredStages": [
2026-06-21T03:31:34.6276501Z         "doc",
2026-06-21T03:31:34.6276810Z         "impl",
2026-06-21T03:31:34.6277119Z         "unit"
2026-06-21T03:31:34.6277420Z       ],
2026-06-21T03:31:34.6277730Z       "stages": {
2026-06-21T03:31:34.6278050Z         "doc": {
2026-06-21T03:31:34.6278379Z           "complete": true,
2026-06-21T03:31:34.6278740Z           "evidence": [
2026-06-21T03:31:34.6279131Z             {
2026-06-21T03:31:34.6279464Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6279841Z               "line": 149
2026-06-21T03:31:34.6280181Z             }
2026-06-21T03:31:34.6280480Z           ]
2026-06-21T03:31:34.6280789Z         },
2026-06-21T03:31:34.6281087Z         "impl": {
2026-06-21T03:31:34.6281401Z           "complete": true,
2026-06-21T03:31:34.6281740Z           "evidence": [
2026-06-21T03:31:34.6282054Z             {
2026-06-21T03:31:34.6282422Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6282847Z               "line": 484
2026-06-21T03:31:34.6283091Z             }
2026-06-21T03:31:34.6283295Z           ]
2026-06-21T03:31:34.6283505Z         },
2026-06-21T03:31:34.6283699Z         "int": {
2026-06-21T03:31:34.6283968Z           "complete": false,
2026-06-21T03:31:34.6284345Z           "evidence": []
2026-06-21T03:31:34.6284704Z         },
2026-06-21T03:31:34.6285004Z         "unit": {
2026-06-21T03:31:34.6285319Z           "complete": true,
2026-06-21T03:31:34.6285672Z           "evidence": [
2026-06-21T03:31:34.6286001Z             {
2026-06-21T03:31:34.6286352Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6286774Z               "line": 657
2026-06-21T03:31:34.6287107Z             },
2026-06-21T03:31:34.6287418Z             {
2026-06-21T03:31:34.6287761Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6288181Z               "line": 681
2026-06-21T03:31:34.6288529Z             },
2026-06-21T03:31:34.6288835Z             {
2026-06-21T03:31:34.6289277Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6289686Z               "line": 705
2026-06-21T03:31:34.6290010Z             }
2026-06-21T03:31:34.6290311Z           ]
2026-06-21T03:31:34.6290611Z         }
2026-06-21T03:31:34.6290906Z       }
2026-06-21T03:31:34.6291193Z     },
2026-06-21T03:31:34.6291468Z     {
2026-06-21T03:31:34.6291762Z       "id": "REQ-ARCH-1",
2026-06-21T03:31:34.6292168Z       "title": "Many small acyclically-layered crates",
2026-06-21T03:31:34.6292601Z       "requiredStages": [
2026-06-21T03:31:34.6292925Z         "impl"
2026-06-21T03:31:34.6293235Z       ],
2026-06-21T03:31:34.6293522Z       "stages": {
2026-06-21T03:31:34.6293831Z         "doc": {
2026-06-21T03:31:34.6294169Z           "complete": false,
2026-06-21T03:31:34.6294533Z           "evidence": []
2026-06-21T03:31:34.6294857Z         },
2026-06-21T03:31:34.6295162Z         "impl": {
2026-06-21T03:31:34.6295501Z           "complete": true,
2026-06-21T03:31:34.6295845Z           "evidence": [
2026-06-21T03:31:34.6296184Z             {
2026-06-21T03:31:34.6296523Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T03:31:34.6296935Z               "line": 18
2026-06-21T03:31:34.6297278Z             },
2026-06-21T03:31:34.6297705Z             {
2026-06-21T03:31:34.6297945Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T03:31:34.6298235Z               "line": 12
2026-06-21T03:31:34.6298451Z             },
2026-06-21T03:31:34.6298645Z             {
2026-06-21T03:31:34.6298893Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T03:31:34.6299236Z               "line": 12
2026-06-21T03:31:34.6299462Z             }
2026-06-21T03:31:34.6299664Z           ]
2026-06-21T03:31:34.6299861Z         },
2026-06-21T03:31:34.6300060Z         "int": {
2026-06-21T03:31:34.6300284Z           "complete": false,
2026-06-21T03:31:34.6300519Z           "evidence": []
2026-06-21T03:31:34.6300852Z         },
2026-06-21T03:31:34.6301039Z         "unit": {
2026-06-21T03:31:34.6301267Z           "complete": false,
2026-06-21T03:31:34.6301510Z           "evidence": []
2026-06-21T03:31:34.6301730Z         }
2026-06-21T03:31:34.6301918Z       }
2026-06-21T03:31:34.6302103Z     },
2026-06-21T03:31:34.6302298Z     {
2026-06-21T03:31:34.6302527Z       "id": "REQ-ARCH-2",
2026-06-21T03:31:34.6302851Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T03:31:34.6303204Z       "requiredStages": [
2026-06-21T03:31:34.6303442Z         "impl"
2026-06-21T03:31:34.6303662Z       ],
2026-06-21T03:31:34.6303863Z       "stages": {
2026-06-21T03:31:34.6304086Z         "doc": {
2026-06-21T03:31:34.6304301Z           "complete": false,
2026-06-21T03:31:34.6304546Z           "evidence": []
2026-06-21T03:31:34.6304771Z         },
2026-06-21T03:31:34.6304970Z         "impl": {
2026-06-21T03:31:34.6305318Z           "complete": true,
2026-06-21T03:31:34.6305571Z           "evidence": [
2026-06-21T03:31:34.6305795Z             {
2026-06-21T03:31:34.6306051Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T03:31:34.6306353Z               "line": 18
2026-06-21T03:31:34.6306591Z             }
2026-06-21T03:31:34.6306802Z           ]
2026-06-21T03:31:34.6307010Z         },
2026-06-21T03:31:34.6307211Z         "int": {
2026-06-21T03:31:34.6307434Z           "complete": false,
2026-06-21T03:31:34.6307679Z           "evidence": []
2026-06-21T03:31:34.6307899Z         },
2026-06-21T03:31:34.6308095Z         "unit": {
2026-06-21T03:31:34.6308314Z           "complete": false,
2026-06-21T03:31:34.6308562Z           "evidence": []
2026-06-21T03:31:34.6308777Z         }
2026-06-21T03:31:34.6309039Z       }
2026-06-21T03:31:34.6309238Z     },
2026-06-21T03:31:34.6309425Z     {
2026-06-21T03:31:34.6309631Z       "id": "REQ-ARCH-3",
2026-06-21T03:31:34.6309989Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T03:31:34.6310373Z       "requiredStages": [
2026-06-21T03:31:34.6310607Z         "impl",
2026-06-21T03:31:34.6310820Z         "unit"
2026-06-21T03:31:34.6311017Z       ],
2026-06-21T03:31:34.6311217Z       "stages": {
2026-06-21T03:31:34.6311431Z         "doc": {
2026-06-21T03:31:34.6326007Z           "complete": false,
2026-06-21T03:31:34.6326305Z           "evidence": []
2026-06-21T03:31:34.6326566Z         },
2026-06-21T03:31:34.6326776Z         "impl": {
2026-06-21T03:31:34.6327015Z           "complete": true,
2026-06-21T03:31:34.6327269Z           "evidence": [
2026-06-21T03:31:34.6327497Z             {
2026-06-21T03:31:34.6327763Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:31:34.6328064Z               "line": 34
2026-06-21T03:31:34.6328289Z             },
2026-06-21T03:31:34.6328530Z             {
2026-06-21T03:31:34.6328799Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:31:34.6329162Z               "line": 41
2026-06-21T03:31:34.6329386Z             }
2026-06-21T03:31:34.6329582Z           ]
2026-06-21T03:31:34.6329792Z         },
2026-06-21T03:31:34.6329987Z         "int": {
2026-06-21T03:31:34.6330207Z           "complete": false,
2026-06-21T03:31:34.6330451Z           "evidence": []
2026-06-21T03:31:34.6330674Z         },
2026-06-21T03:31:34.6330883Z         "unit": {
2026-06-21T03:31:34.6331105Z           "complete": true,
2026-06-21T03:31:34.6331494Z           "evidence": [
2026-06-21T03:31:34.6331712Z             {
2026-06-21T03:31:34.6331955Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:31:34.6332246Z               "line": 51
2026-06-21T03:31:34.6332476Z             },
2026-06-21T03:31:34.6332681Z             {
2026-06-21T03:31:34.6332923Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:31:34.6333214Z               "line": 71
2026-06-21T03:31:34.6333438Z             },
2026-06-21T03:31:34.6333633Z             {
2026-06-21T03:31:34.6333874Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:31:34.6334164Z               "line": 83
2026-06-21T03:31:34.6334498Z             }
2026-06-21T03:31:34.6334699Z           ]
2026-06-21T03:31:34.6334889Z         }
2026-06-21T03:31:34.6335090Z       }
2026-06-21T03:31:34.6335286Z     },
2026-06-21T03:31:34.6335490Z     {
2026-06-21T03:31:34.6335704Z       "id": "REQ-ARCH-4",
2026-06-21T03:31:34.6336019Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T03:31:34.6336381Z       "requiredStages": [
2026-06-21T03:31:34.6336623Z         "impl",
2026-06-21T03:31:34.6336841Z         "unit"
2026-06-21T03:31:34.6337045Z       ],
2026-06-21T03:31:34.6337247Z       "stages": {
2026-06-21T03:31:34.6337461Z         "doc": {
2026-06-21T03:31:34.6337684Z           "complete": false,
2026-06-21T03:31:34.6337933Z           "evidence": []
2026-06-21T03:31:34.6338149Z         },
2026-06-21T03:31:34.6338352Z         "impl": {
2026-06-21T03:31:34.6338585Z           "complete": true,
2026-06-21T03:31:34.6338831Z           "evidence": [
2026-06-21T03:31:34.6339134Z             {
2026-06-21T03:31:34.6339393Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6339674Z               "line": 165
2026-06-21T03:31:34.6339899Z             },
2026-06-21T03:31:34.6340109Z             {
2026-06-21T03:31:34.6340362Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6340642Z               "line": 188
2026-06-21T03:31:34.6340876Z             },
2026-06-21T03:31:34.6341086Z             {
2026-06-21T03:31:34.6341330Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6341612Z               "line": 208
2026-06-21T03:31:34.6341834Z             },
2026-06-21T03:31:34.6342044Z             {
2026-06-21T03:31:34.6342287Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6342558Z               "line": 223
2026-06-21T03:31:34.6342787Z             },
2026-06-21T03:31:34.6342988Z             {
2026-06-21T03:31:34.6343231Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6343522Z               "line": 273
2026-06-21T03:31:34.6343745Z             }
2026-06-21T03:31:34.6343952Z           ]
2026-06-21T03:31:34.6344159Z         },
2026-06-21T03:31:34.6344363Z         "int": {
2026-06-21T03:31:34.6344592Z           "complete": false,
2026-06-21T03:31:34.6344834Z           "evidence": []
2026-06-21T03:31:34.6345058Z         },
2026-06-21T03:31:34.6345264Z         "unit": {
2026-06-21T03:31:34.6345494Z           "complete": true,
2026-06-21T03:31:34.6345730Z           "evidence": [
2026-06-21T03:31:34.6345955Z             {
2026-06-21T03:31:34.6346208Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6346490Z               "line": 334
2026-06-21T03:31:34.6346719Z             },
2026-06-21T03:31:34.6346927Z             {
2026-06-21T03:31:34.6347174Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6347454Z               "line": 344
2026-06-21T03:31:34.6347687Z             },
2026-06-21T03:31:34.6347897Z             {
2026-06-21T03:31:34.6348145Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6348427Z               "line": 355
2026-06-21T03:31:34.6348641Z             },
2026-06-21T03:31:34.6348840Z             {
2026-06-21T03:31:34.6349146Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6349419Z               "line": 366
2026-06-21T03:31:34.6349745Z             },
2026-06-21T03:31:34.6349949Z             {
2026-06-21T03:31:34.6350187Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6350468Z               "line": 378
2026-06-21T03:31:34.6350693Z             },
2026-06-21T03:31:34.6350893Z             {
2026-06-21T03:31:34.6351126Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6351408Z               "line": 391
2026-06-21T03:31:34.6351633Z             },
2026-06-21T03:31:34.6351832Z             {
2026-06-21T03:31:34.6352075Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6352360Z               "line": 402
2026-06-21T03:31:34.6352699Z             },
2026-06-21T03:31:34.6352909Z             {
2026-06-21T03:31:34.6353148Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6353423Z               "line": 419
2026-06-21T03:31:34.6353639Z             },
2026-06-21T03:31:34.6353845Z             {
2026-06-21T03:31:34.6354077Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.6354358Z               "line": 547
2026-06-21T03:31:34.6354587Z             }
2026-06-21T03:31:34.6354796Z           ]
2026-06-21T03:31:34.6354998Z         }
2026-06-21T03:31:34.6355195Z       }
2026-06-21T03:31:34.6355399Z     },
2026-06-21T03:31:34.6355599Z     {
2026-06-21T03:31:34.6355805Z       "id": "REQ-CLI-1",
2026-06-21T03:31:34.6375769Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T03:31:34.6377105Z       "requiredStages": [
2026-06-21T03:31:34.6377354Z         "impl",
2026-06-21T03:31:34.6377564Z         "unit"
2026-06-21T03:31:34.6377769Z       ],
2026-06-21T03:31:34.6377974Z       "stages": {
2026-06-21T03:31:34.6378185Z         "doc": {
2026-06-21T03:31:34.6378404Z           "complete": false,
2026-06-21T03:31:34.6378646Z           "evidence": []
2026-06-21T03:31:34.6378873Z         },
2026-06-21T03:31:34.6379134Z         "impl": {
2026-06-21T03:31:34.6379343Z           "complete": true,
2026-06-21T03:31:34.6379577Z           "evidence": [
2026-06-21T03:31:34.6379797Z             {
2026-06-21T03:31:34.6380026Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6380302Z               "line": 225
2026-06-21T03:31:34.6380531Z             },
2026-06-21T03:31:34.6380732Z             {
2026-06-21T03:31:34.6380971Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6381240Z               "line": 1093
2026-06-21T03:31:34.6381463Z             },
2026-06-21T03:31:34.6381668Z             {
2026-06-21T03:31:34.6381905Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6382177Z               "line": 1720
2026-06-21T03:31:34.6382407Z             },
2026-06-21T03:31:34.6382608Z             {
2026-06-21T03:31:34.6382826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6383098Z               "line": 3124
2026-06-21T03:31:34.6383323Z             }
2026-06-21T03:31:34.6383523Z           ]
2026-06-21T03:31:34.6383717Z         },
2026-06-21T03:31:34.6383905Z         "int": {
2026-06-21T03:31:34.6384126Z           "complete": false,
2026-06-21T03:31:34.6384361Z           "evidence": []
2026-06-21T03:31:34.6384586Z         },
2026-06-21T03:31:34.6384780Z         "unit": {
2026-06-21T03:31:34.6384991Z           "complete": true,
2026-06-21T03:31:34.6385224Z           "evidence": [
2026-06-21T03:31:34.6385452Z             {
2026-06-21T03:31:34.6385686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6385957Z               "line": 7947
2026-06-21T03:31:34.6386183Z             }
2026-06-21T03:31:34.6386385Z           ]
2026-06-21T03:31:34.6386584Z         }
2026-06-21T03:31:34.6386765Z       }
2026-06-21T03:31:34.6387104Z     },
2026-06-21T03:31:34.6387284Z     {
2026-06-21T03:31:34.6387490Z       "id": "REQ-CLI-2",
2026-06-21T03:31:34.6388378Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T03:31:34.6389296Z       "requiredStages": [
2026-06-21T03:31:34.6389527Z         "impl",
2026-06-21T03:31:34.6389733Z         "unit"
2026-06-21T03:31:34.6389937Z       ],
2026-06-21T03:31:34.6390137Z       "stages": {
2026-06-21T03:31:34.6390452Z         "doc": {
2026-06-21T03:31:34.6390667Z           "complete": false,
2026-06-21T03:31:34.6390901Z           "evidence": []
2026-06-21T03:31:34.6391120Z         },
2026-06-21T03:31:34.6391316Z         "impl": {
2026-06-21T03:31:34.6391545Z           "complete": true,
2026-06-21T03:31:34.6391786Z           "evidence": [
2026-06-21T03:31:34.6392009Z             {
2026-06-21T03:31:34.6392256Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6392538Z               "line": 414
2026-06-21T03:31:34.6392770Z             },
2026-06-21T03:31:34.6392976Z             {
2026-06-21T03:31:34.6393225Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:31:34.6393507Z               "line": 97
2026-06-21T03:31:34.6393724Z             },
2026-06-21T03:31:34.6393925Z             {
2026-06-21T03:31:34.6394174Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.6394451Z               "line": 256
2026-06-21T03:31:34.6394677Z             },
2026-06-21T03:31:34.6394888Z             {
2026-06-21T03:31:34.6395112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6395378Z               "line": 434
2026-06-21T03:31:34.6395607Z             },
2026-06-21T03:31:34.6395808Z             {
2026-06-21T03:31:34.6396037Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6396318Z               "line": 1174
2026-06-21T03:31:34.6396546Z             },
2026-06-21T03:31:34.6396743Z             {
2026-06-21T03:31:34.6396964Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6397230Z               "line": 1958
2026-06-21T03:31:34.6397455Z             },
2026-06-21T03:31:34.6397654Z             {
2026-06-21T03:31:34.6397878Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6398136Z               "line": 2047
2026-06-21T03:31:34.6398356Z             },
2026-06-21T03:31:34.6398541Z             {
2026-06-21T03:31:34.6398761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6399357Z               "line": 2108
2026-06-21T03:31:34.6399591Z             }
2026-06-21T03:31:34.6399790Z           ]
2026-06-21T03:31:34.6399980Z         },
2026-06-21T03:31:34.6400173Z         "int": {
2026-06-21T03:31:34.6400392Z           "complete": false,
2026-06-21T03:31:34.6400631Z           "evidence": []
2026-06-21T03:31:34.6400856Z         },
2026-06-21T03:31:34.6401060Z         "unit": {
2026-06-21T03:31:34.6401274Z           "complete": true,
2026-06-21T03:31:34.6401510Z           "evidence": [
2026-06-21T03:31:34.6401728Z             {
2026-06-21T03:31:34.6401975Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.6402261Z               "line": 338
2026-06-21T03:31:34.6402471Z             },
2026-06-21T03:31:34.6402682Z             {
2026-06-21T03:31:34.6402898Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6403160Z               "line": 8102
2026-06-21T03:31:34.6403384Z             }
2026-06-21T03:31:34.6403584Z           ]
2026-06-21T03:31:34.6403780Z         }
2026-06-21T03:31:34.6403979Z       }
2026-06-21T03:31:34.6404175Z     },
2026-06-21T03:31:34.6404367Z     {
2026-06-21T03:31:34.6404576Z       "id": "REQ-CLI-3",
2026-06-21T03:31:34.6405472Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T03:31:34.6406449Z       "requiredStages": [
2026-06-21T03:31:34.6406683Z         "impl",
2026-06-21T03:31:34.6406888Z         "unit"
2026-06-21T03:31:34.6407092Z       ],
2026-06-21T03:31:34.6407289Z       "stages": {
2026-06-21T03:31:34.6407497Z         "doc": {
2026-06-21T03:31:34.6407714Z           "complete": false,
2026-06-21T03:31:34.6407948Z           "evidence": []
2026-06-21T03:31:34.6408171Z         },
2026-06-21T03:31:34.6408372Z         "impl": {
2026-06-21T03:31:34.6408587Z           "complete": true,
2026-06-21T03:31:34.6409020Z           "evidence": [
2026-06-21T03:31:34.6409231Z             {
2026-06-21T03:31:34.6409459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6409735Z               "line": 1087
2026-06-21T03:31:34.6409968Z             }
2026-06-21T03:31:34.6410166Z           ]
2026-06-21T03:31:34.6410359Z         },
2026-06-21T03:31:34.6410572Z         "int": {
2026-06-21T03:31:34.6410795Z           "complete": false,
2026-06-21T03:31:34.6411029Z           "evidence": []
2026-06-21T03:31:34.6411244Z         },
2026-06-21T03:31:34.6411440Z         "unit": {
2026-06-21T03:31:34.6411653Z           "complete": true,
2026-06-21T03:31:34.6411888Z           "evidence": [
2026-06-21T03:31:34.6412108Z             {
2026-06-21T03:31:34.6412336Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6412607Z               "line": 7912
2026-06-21T03:31:34.6412826Z             }
2026-06-21T03:31:34.6413021Z           ]
2026-06-21T03:31:34.6413224Z         }
2026-06-21T03:31:34.6413430Z       }
2026-06-21T03:31:34.6413624Z     },
2026-06-21T03:31:34.6413820Z     {
2026-06-21T03:31:34.6414025Z       "id": "REQ-CLI-4",
2026-06-21T03:31:34.6416464Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T03:31:34.6418412Z       "requiredStages": [],
2026-06-21T03:31:34.6418650Z       "stages": {
2026-06-21T03:31:34.6418870Z         "doc": {
2026-06-21T03:31:34.6419185Z           "complete": false,
2026-06-21T03:31:34.6419433Z           "evidence": []
2026-06-21T03:31:34.6419656Z         },
2026-06-21T03:31:34.6419857Z         "impl": {
2026-06-21T03:31:34.6420077Z           "complete": true,
2026-06-21T03:31:34.6420320Z           "evidence": [
2026-06-21T03:31:34.6420558Z             {
2026-06-21T03:31:34.6420806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6421090Z               "line": 5678
2026-06-21T03:31:34.6421313Z             }
2026-06-21T03:31:34.6421517Z           ]
2026-06-21T03:31:34.6421709Z         },
2026-06-21T03:31:34.6421913Z         "int": {
2026-06-21T03:31:34.6422147Z           "complete": false,
2026-06-21T03:31:34.6422395Z           "evidence": []
2026-06-21T03:31:34.6422620Z         },
2026-06-21T03:31:34.6422819Z         "unit": {
2026-06-21T03:31:34.6423048Z           "complete": false,
2026-06-21T03:31:34.6423288Z           "evidence": []
2026-06-21T03:31:34.6423518Z         }
2026-06-21T03:31:34.6423727Z       }
2026-06-21T03:31:34.6423927Z     },
2026-06-21T03:31:34.6424127Z     {
2026-06-21T03:31:34.6424352Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T03:31:34.6427555Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T03:31:34.6430737Z       "requiredStages": [
2026-06-21T03:31:34.6430971Z         "impl",
2026-06-21T03:31:34.6431185Z         "unit"
2026-06-21T03:31:34.6431394Z       ],
2026-06-21T03:31:34.6431594Z       "stages": {
2026-06-21T03:31:34.6431810Z         "doc": {
2026-06-21T03:31:34.6432031Z           "complete": false,
2026-06-21T03:31:34.6432274Z           "evidence": []
2026-06-21T03:31:34.6432497Z         },
2026-06-21T03:31:34.6432693Z         "impl": {
2026-06-21T03:31:34.6432918Z           "complete": true,
2026-06-21T03:31:34.6433156Z           "evidence": [
2026-06-21T03:31:34.6433384Z             {
2026-06-21T03:31:34.6433613Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6433891Z               "line": 8
2026-06-21T03:31:34.6434103Z             },
2026-06-21T03:31:34.6434310Z             {
2026-06-21T03:31:34.6434555Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6434822Z               "line": 51
2026-06-21T03:31:34.6435049Z             },
2026-06-21T03:31:34.6435255Z             {
2026-06-21T03:31:34.6435480Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6435761Z               "line": 82
2026-06-21T03:31:34.6435989Z             },
2026-06-21T03:31:34.6436193Z             {
2026-06-21T03:31:34.6436434Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6436720Z               "line": 229
2026-06-21T03:31:34.6436946Z             }
2026-06-21T03:31:34.6437143Z           ]
2026-06-21T03:31:34.6437333Z         },
2026-06-21T03:31:34.6437542Z         "int": {
2026-06-21T03:31:34.6437757Z           "complete": false,
2026-06-21T03:31:34.6438011Z           "evidence": []
2026-06-21T03:31:34.6438234Z         },
2026-06-21T03:31:34.6438420Z         "unit": {
2026-06-21T03:31:34.6438645Z           "complete": true,
2026-06-21T03:31:34.6438882Z           "evidence": [
2026-06-21T03:31:34.6439162Z             {
2026-06-21T03:31:34.6439394Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6439672Z               "line": 249
2026-06-21T03:31:34.6439900Z             },
2026-06-21T03:31:34.6440109Z             {
2026-06-21T03:31:34.6440348Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6440629Z               "line": 256
2026-06-21T03:31:34.6440854Z             },
2026-06-21T03:31:34.6441053Z             {
2026-06-21T03:31:34.6441282Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6441555Z               "line": 263
2026-06-21T03:31:34.6441770Z             },
2026-06-21T03:31:34.6441978Z             {
2026-06-21T03:31:34.6442201Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6442481Z               "line": 270
2026-06-21T03:31:34.6442694Z             },
2026-06-21T03:31:34.6442896Z             {
2026-06-21T03:31:34.6443134Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6443396Z               "line": 297
2026-06-21T03:31:34.6443620Z             },
2026-06-21T03:31:34.6443830Z             {
2026-06-21T03:31:34.6444074Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6444356Z               "line": 307
2026-06-21T03:31:34.6444678Z             },
2026-06-21T03:31:34.6444885Z             {
2026-06-21T03:31:34.6445105Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6445372Z               "line": 317
2026-06-21T03:31:34.6445591Z             },
2026-06-21T03:31:34.6445787Z             {
2026-06-21T03:31:34.6446030Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6446302Z               "line": 331
2026-06-21T03:31:34.6446525Z             },
2026-06-21T03:31:34.6446735Z             {
2026-06-21T03:31:34.6446970Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6447247Z               "line": 340
2026-06-21T03:31:34.6447574Z             },
2026-06-21T03:31:34.6447773Z             {
2026-06-21T03:31:34.6448013Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6448289Z               "line": 348
2026-06-21T03:31:34.6448513Z             }
2026-06-21T03:31:34.6448713Z           ]
2026-06-21T03:31:34.6448914Z         }
2026-06-21T03:31:34.6449196Z       }
2026-06-21T03:31:34.6449390Z     },
2026-06-21T03:31:34.6449581Z     {
2026-06-21T03:31:34.6449813Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T03:31:34.6458095Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T03:31:34.6462279Z       "requiredStages": [
2026-06-21T03:31:34.6462526Z         "impl",
2026-06-21T03:31:34.6462740Z         "unit"
2026-06-21T03:31:34.6462943Z       ],
2026-06-21T03:31:34.6463146Z       "stages": {
2026-06-21T03:31:34.6463349Z         "doc": {
2026-06-21T03:31:34.6463572Z           "complete": false,
2026-06-21T03:31:34.6463820Z           "evidence": []
2026-06-21T03:31:34.6464049Z         },
2026-06-21T03:31:34.6464255Z         "impl": {
2026-06-21T03:31:34.6464483Z           "complete": true,
2026-06-21T03:31:34.6464726Z           "evidence": [
2026-06-21T03:31:34.6464936Z             {
2026-06-21T03:31:34.6465195Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6465490Z               "line": 141
2026-06-21T03:31:34.6465721Z             },
2026-06-21T03:31:34.6465921Z             {
2026-06-21T03:31:34.6466159Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6466439Z               "line": 1376
2026-06-21T03:31:34.6466673Z             },
2026-06-21T03:31:34.6466879Z             {
2026-06-21T03:31:34.6467113Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6467384Z               "line": 2145
2026-06-21T03:31:34.6467617Z             },
2026-06-21T03:31:34.6467813Z             {
2026-06-21T03:31:34.6468043Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6468471Z               "line": 4368
2026-06-21T03:31:34.6468699Z             },
2026-06-21T03:31:34.6468898Z             {
2026-06-21T03:31:34.6469199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6469462Z               "line": 4466
2026-06-21T03:31:34.6469691Z             },
2026-06-21T03:31:34.6469895Z             {
2026-06-21T03:31:34.6470124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6470392Z               "line": 5257
2026-06-21T03:31:34.6470621Z             },
2026-06-21T03:31:34.6470819Z             {
2026-06-21T03:31:34.6471061Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6471460Z               "line": 39
2026-06-21T03:31:34.6471690Z             }
2026-06-21T03:31:34.6471895Z           ]
2026-06-21T03:31:34.6472099Z         },
2026-06-21T03:31:34.6472296Z         "int": {
2026-06-21T03:31:34.6472525Z           "complete": false,
2026-06-21T03:31:34.6472772Z           "evidence": []
2026-06-21T03:31:34.6472995Z         },
2026-06-21T03:31:34.6473207Z         "unit": {
2026-06-21T03:31:34.6473435Z           "complete": true,
2026-06-21T03:31:34.6473672Z           "evidence": [
2026-06-21T03:31:34.6473896Z             {
2026-06-21T03:31:34.6474132Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6474399Z               "line": 10272
2026-06-21T03:31:34.6474632Z             },
2026-06-21T03:31:34.6474829Z             {
2026-06-21T03:31:34.6475072Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6475362Z               "line": 281
2026-06-21T03:31:34.6475591Z             },
2026-06-21T03:31:34.6475788Z             {
2026-06-21T03:31:34.6476027Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6476319Z               "line": 358
2026-06-21T03:31:34.6532733Z             },
2026-06-21T03:31:34.6533090Z             {
2026-06-21T03:31:34.6533367Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6533686Z               "line": 381
2026-06-21T03:31:34.6533977Z             },
2026-06-21T03:31:34.6534176Z             {
2026-06-21T03:31:34.6534417Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:31:34.6534703Z               "line": 395
2026-06-21T03:31:34.6534936Z             }
2026-06-21T03:31:34.6535136Z           ]
2026-06-21T03:31:34.6535337Z         }
2026-06-21T03:31:34.6535532Z       }
2026-06-21T03:31:34.6535714Z     },
2026-06-21T03:31:34.6535900Z     {
2026-06-21T03:31:34.6536114Z       "id": "REQ-CONSENT-1",
2026-06-21T03:31:34.6537210Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T03:31:34.6538285Z       "requiredStages": [
2026-06-21T03:31:34.6538524Z         "impl",
2026-06-21T03:31:34.6538718Z         "unit"
2026-06-21T03:31:34.6538928Z       ],
2026-06-21T03:31:34.6539191Z       "stages": {
2026-06-21T03:31:34.6539402Z         "doc": {
2026-06-21T03:31:34.6539623Z           "complete": false,
2026-06-21T03:31:34.6539870Z           "evidence": []
2026-06-21T03:31:34.6540098Z         },
2026-06-21T03:31:34.6540302Z         "impl": {
2026-06-21T03:31:34.6540523Z           "complete": true,
2026-06-21T03:31:34.6540761Z           "evidence": [
2026-06-21T03:31:34.6540980Z             {
2026-06-21T03:31:34.6541228Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6541529Z               "line": 27
2026-06-21T03:31:34.6541753Z             },
2026-06-21T03:31:34.6542021Z             {
2026-06-21T03:31:34.6542269Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6542552Z               "line": 75
2026-06-21T03:31:34.6542768Z             },
2026-06-21T03:31:34.6542973Z             {
2026-06-21T03:31:34.6543201Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6543922Z               "line": 98
2026-06-21T03:31:34.6544145Z             },
2026-06-21T03:31:34.6544341Z             {
2026-06-21T03:31:34.6544585Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6544860Z               "line": 82
2026-06-21T03:31:34.6545081Z             },
2026-06-21T03:31:34.6545278Z             {
2026-06-21T03:31:34.6545515Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6545807Z               "line": 109
2026-06-21T03:31:34.6546034Z             },
2026-06-21T03:31:34.6546231Z             {
2026-06-21T03:31:34.6546470Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6546879Z               "line": 127
2026-06-21T03:31:34.6547094Z             },
2026-06-21T03:31:34.6547294Z             {
2026-06-21T03:31:34.6547532Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6547798Z               "line": 142
2026-06-21T03:31:34.6548010Z             },
2026-06-21T03:31:34.6548215Z             {
2026-06-21T03:31:34.6548435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6548708Z               "line": 7048
2026-06-21T03:31:34.6548930Z             }
2026-06-21T03:31:34.6549207Z           ]
2026-06-21T03:31:34.6549403Z         },
2026-06-21T03:31:34.6549593Z         "int": {
2026-06-21T03:31:34.6549817Z           "complete": false,
2026-06-21T03:31:34.6550052Z           "evidence": []
2026-06-21T03:31:34.6550270Z         },
2026-06-21T03:31:34.6550472Z         "unit": {
2026-06-21T03:31:34.6550697Z           "complete": true,
2026-06-21T03:31:34.6550925Z           "evidence": [
2026-06-21T03:31:34.6551149Z             {
2026-06-21T03:31:34.6551383Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6551669Z               "line": 334
2026-06-21T03:31:34.6551909Z             },
2026-06-21T03:31:34.6552117Z             {
2026-06-21T03:31:34.6552346Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6552628Z               "line": 380
2026-06-21T03:31:34.6552853Z             },
2026-06-21T03:31:34.6553051Z             {
2026-06-21T03:31:34.6553295Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6553581Z               "line": 391
2026-06-21T03:31:34.6553815Z             },
2026-06-21T03:31:34.6554019Z             {
2026-06-21T03:31:34.6554258Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6554553Z               "line": 165
2026-06-21T03:31:34.6554783Z             },
2026-06-21T03:31:34.6554982Z             {
2026-06-21T03:31:34.6555220Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6555496Z               "line": 184
2026-06-21T03:31:34.6555732Z             },
2026-06-21T03:31:34.6555932Z             {
2026-06-21T03:31:34.6556161Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:31:34.6556434Z               "line": 204
2026-06-21T03:31:34.6556662Z             },
2026-06-21T03:31:34.6556867Z             {
2026-06-21T03:31:34.6557096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6557364Z               "line": 8334
2026-06-21T03:31:34.6557592Z             }
2026-06-21T03:31:34.6557792Z           ]
2026-06-21T03:31:34.6557984Z         }
2026-06-21T03:31:34.6558177Z       }
2026-06-21T03:31:34.6558368Z     },
2026-06-21T03:31:34.6558565Z     {
2026-06-21T03:31:34.6558780Z       "id": "REQ-CONSENT-2",
2026-06-21T03:31:34.6559892Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T03:31:34.6560873Z       "requiredStages": [
2026-06-21T03:31:34.6561108Z         "impl",
2026-06-21T03:31:34.6561314Z         "unit"
2026-06-21T03:31:34.6561525Z       ],
2026-06-21T03:31:34.6561724Z       "stages": {
2026-06-21T03:31:34.6562048Z         "doc": {
2026-06-21T03:31:34.6562253Z           "complete": false,
2026-06-21T03:31:34.6562493Z           "evidence": []
2026-06-21T03:31:34.6562711Z         },
2026-06-21T03:31:34.6562906Z         "impl": {
2026-06-21T03:31:34.6563118Z           "complete": true,
2026-06-21T03:31:34.6563365Z           "evidence": [
2026-06-21T03:31:34.6563592Z             {
2026-06-21T03:31:34.6563836Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6564122Z               "line": 140
2026-06-21T03:31:34.6564346Z             },
2026-06-21T03:31:34.6564546Z             {
2026-06-21T03:31:34.6564794Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6565185Z               "line": 165
2026-06-21T03:31:34.6565409Z             },
2026-06-21T03:31:34.6565604Z             {
2026-06-21T03:31:34.6565851Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6566135Z               "line": 199
2026-06-21T03:31:34.6566355Z             },
2026-06-21T03:31:34.6566559Z             {
2026-06-21T03:31:34.6566802Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6567084Z               "line": 241
2026-06-21T03:31:34.6567309Z             },
2026-06-21T03:31:34.6567508Z             {
2026-06-21T03:31:34.6567751Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6568023Z               "line": 269
2026-06-21T03:31:34.6568239Z             },
2026-06-21T03:31:34.6568438Z             {
2026-06-21T03:31:34.6568676Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6569040Z               "line": 300
2026-06-21T03:31:34.6569251Z             },
2026-06-21T03:31:34.6569459Z             {
2026-06-21T03:31:34.6569688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6569957Z               "line": 6839
2026-06-21T03:31:34.6570181Z             },
2026-06-21T03:31:34.6570370Z             {
2026-06-21T03:31:34.6570599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6570876Z               "line": 6897
2026-06-21T03:31:34.6571096Z             }
2026-06-21T03:31:34.6571299Z           ]
2026-06-21T03:31:34.6571495Z         },
2026-06-21T03:31:34.6571682Z         "int": {
2026-06-21T03:31:34.6571902Z           "complete": false,
2026-06-21T03:31:34.6572146Z           "evidence": []
2026-06-21T03:31:34.6572370Z         },
2026-06-21T03:31:34.6572565Z         "unit": {
2026-06-21T03:31:34.6572780Z           "complete": true,
2026-06-21T03:31:34.6573019Z           "evidence": [
2026-06-21T03:31:34.6573237Z             {
2026-06-21T03:31:34.6573485Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6573771Z               "line": 419
2026-06-21T03:31:34.6573997Z             },
2026-06-21T03:31:34.6574195Z             {
2026-06-21T03:31:34.6574434Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6574720Z               "line": 436
2026-06-21T03:31:34.6574940Z             },
2026-06-21T03:31:34.6575144Z             {
2026-06-21T03:31:34.6575378Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6575669Z               "line": 472
2026-06-21T03:31:34.6575884Z             },
2026-06-21T03:31:34.6576083Z             {
2026-06-21T03:31:34.6576326Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.6576611Z               "line": 516
2026-06-21T03:31:34.6576833Z             },
2026-06-21T03:31:34.6577024Z             {
2026-06-21T03:31:34.6577249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6577521Z               "line": 9614
2026-06-21T03:31:34.6577748Z             },
2026-06-21T03:31:34.6577949Z             {
2026-06-21T03:31:34.6578178Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6578451Z               "line": 9696
2026-06-21T03:31:34.6578751Z             }
2026-06-21T03:31:34.6579246Z           ]
2026-06-21T03:31:34.6579539Z         }
2026-06-21T03:31:34.6579873Z       }
2026-06-21T03:31:34.6580168Z     },
2026-06-21T03:31:34.6580582Z     {
2026-06-21T03:31:34.6580974Z       "id": "REQ-CONSENT-3",
2026-06-21T03:31:34.6583288Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T03:31:34.6585309Z       "requiredStages": [
2026-06-21T03:31:34.6585652Z         "doc",
2026-06-21T03:31:34.6585985Z         "impl",
2026-06-21T03:31:34.6586338Z         "unit",
2026-06-21T03:31:34.6586643Z         "int"
2026-06-21T03:31:34.6586957Z       ],
2026-06-21T03:31:34.6587289Z       "stages": {
2026-06-21T03:31:34.6587575Z         "doc": {
2026-06-21T03:31:34.6587918Z           "complete": true,
2026-06-21T03:31:34.6588256Z           "evidence": [
2026-06-21T03:31:34.6588628Z             {
2026-06-21T03:31:34.6589040Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6589383Z               "line": 304
2026-06-21T03:31:34.6589735Z             }
2026-06-21T03:31:34.6590048Z           ]
2026-06-21T03:31:34.6590314Z         },
2026-06-21T03:31:34.6590667Z         "impl": {
2026-06-21T03:31:34.6590967Z           "complete": true,
2026-06-21T03:31:34.6591381Z           "evidence": [
2026-06-21T03:31:34.6591682Z             {
2026-06-21T03:31:34.6592020Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.6592467Z               "line": 123
2026-06-21T03:31:34.6592789Z             },
2026-06-21T03:31:34.6593103Z             {
2026-06-21T03:31:34.6593461Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.6593858Z               "line": 162
2026-06-21T03:31:34.6594244Z             },
2026-06-21T03:31:34.6594530Z             {
2026-06-21T03:31:34.6594901Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.6595296Z               "line": 291
2026-06-21T03:31:34.6595620Z             },
2026-06-21T03:31:34.6595935Z             {
2026-06-21T03:31:34.6596292Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6596747Z               "line": 574
2026-06-21T03:31:34.6597076Z             },
2026-06-21T03:31:34.6597386Z             {
2026-06-21T03:31:34.6597769Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6598144Z               "line": 824
2026-06-21T03:31:34.6598454Z             },
2026-06-21T03:31:34.6598802Z             {
2026-06-21T03:31:34.6599217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6599661Z               "line": 6965
2026-06-21T03:31:34.6599980Z             }
2026-06-21T03:31:34.6600254Z           ]
2026-06-21T03:31:34.6600589Z         },
2026-06-21T03:31:34.6600893Z         "int": {
2026-06-21T03:31:34.6601212Z           "complete": true,
2026-06-21T03:31:34.6601565Z           "evidence": [
2026-06-21T03:31:34.6601889Z             {
2026-06-21T03:31:34.6602284Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T03:31:34.6602671Z               "line": 16
2026-06-21T03:31:34.6602999Z             }
2026-06-21T03:31:34.6603320Z           ]
2026-06-21T03:31:34.6603588Z         },
2026-06-21T03:31:34.6603926Z         "unit": {
2026-06-21T03:31:34.6604241Z           "complete": true,
2026-06-21T03:31:34.6604617Z           "evidence": [
2026-06-21T03:31:34.6604951Z             {
2026-06-21T03:31:34.6605300Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.6605734Z               "line": 1019
2026-06-21T03:31:34.6606034Z             },
2026-06-21T03:31:34.6606314Z             {
2026-06-21T03:31:34.6606701Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.6607206Z               "line": 1066
2026-06-21T03:31:34.6607612Z             },
2026-06-21T03:31:34.6607898Z             {
2026-06-21T03:31:34.6608225Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6608663Z               "line": 1394
2026-06-21T03:31:34.6609086Z             }
2026-06-21T03:31:34.6609400Z           ]
2026-06-21T03:31:34.6609700Z         }
2026-06-21T03:31:34.6610011Z       }
2026-06-21T03:31:34.6610340Z     },
2026-06-21T03:31:34.6610631Z     {
2026-06-21T03:31:34.6610988Z       "id": "REQ-CONV-1",
2026-06-21T03:31:34.6612669Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T03:31:34.6614238Z       "requiredStages": [
2026-06-21T03:31:34.6614659Z         "impl",
2026-06-21T03:31:34.6614955Z         "unit"
2026-06-21T03:31:34.6615270Z       ],
2026-06-21T03:31:34.6615589Z       "stages": {
2026-06-21T03:31:34.6615880Z         "doc": {
2026-06-21T03:31:34.6616233Z           "complete": false,
2026-06-21T03:31:34.6616564Z           "evidence": []
2026-06-21T03:31:34.6616933Z         },
2026-06-21T03:31:34.6617252Z         "impl": {
2026-06-21T03:31:34.6617561Z           "complete": true,
2026-06-21T03:31:34.6617928Z           "evidence": [
2026-06-21T03:31:34.6618234Z             {
2026-06-21T03:31:34.6618572Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6619117Z               "line": 938
2026-06-21T03:31:34.6619436Z             },
2026-06-21T03:31:34.6619818Z             {
2026-06-21T03:31:34.6620156Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.6620543Z               "line": 94
2026-06-21T03:31:34.6620904Z             },
2026-06-21T03:31:34.6621196Z             {
2026-06-21T03:31:34.6621562Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.6621956Z               "line": 345
2026-06-21T03:31:34.6622285Z             },
2026-06-21T03:31:34.6622643Z             {
2026-06-21T03:31:34.6622986Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.6623386Z               "line": 387
2026-06-21T03:31:34.6623714Z             },
2026-06-21T03:31:34.6624020Z             {
2026-06-21T03:31:34.6624389Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.6624779Z               "line": 472
2026-06-21T03:31:34.6625142Z             },
2026-06-21T03:31:34.6625447Z             {
2026-06-21T03:31:34.6625776Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6626178Z               "line": 667
2026-06-21T03:31:34.6626507Z             },
2026-06-21T03:31:34.6626779Z             {
2026-06-21T03:31:34.6627168Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6627559Z               "line": 693
2026-06-21T03:31:34.6627935Z             },
2026-06-21T03:31:34.6628231Z             {
2026-06-21T03:31:34.6628551Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.6629076Z               "line": 369
2026-06-21T03:31:34.6629388Z             },
2026-06-21T03:31:34.6629706Z             {
2026-06-21T03:31:34.6630073Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:31:34.6630464Z               "line": 19
2026-06-21T03:31:34.6630840Z             }
2026-06-21T03:31:34.6631131Z           ]
2026-06-21T03:31:34.6631437Z         },
2026-06-21T03:31:34.6631751Z         "int": {
2026-06-21T03:31:34.6632060Z           "complete": false,
2026-06-21T03:31:34.6632439Z           "evidence": []
2026-06-21T03:31:34.6632739Z         },
2026-06-21T03:31:34.6633097Z         "unit": {
2026-06-21T03:31:34.6633498Z           "complete": true,
2026-06-21T03:31:34.6633974Z           "evidence": [
2026-06-21T03:31:34.6634298Z             {
2026-06-21T03:31:34.6634651Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6635068Z               "line": 1263
2026-06-21T03:31:34.6635373Z             },
2026-06-21T03:31:34.6642966Z             {
2026-06-21T03:31:34.6643333Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:31:34.6643657Z               "line": 108
2026-06-21T03:31:34.6643892Z             },
2026-06-21T03:31:34.6644097Z             {
2026-06-21T03:31:34.6644359Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:31:34.6644821Z               "line": 134
2026-06-21T03:31:34.6645041Z             },
2026-06-21T03:31:34.6645254Z             {
2026-06-21T03:31:34.6645509Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:31:34.6645809Z               "line": 144
2026-06-21T03:31:34.6646029Z             }
2026-06-21T03:31:34.6646238Z           ]
2026-06-21T03:31:34.6646449Z         }
2026-06-21T03:31:34.6646645Z       }
2026-06-21T03:31:34.6646839Z     },
2026-06-21T03:31:34.6647030Z     {
2026-06-21T03:31:34.6647241Z       "id": "REQ-CONV-2",
2026-06-21T03:31:34.6648575Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T03:31:34.6649746Z       "requiredStages": [
2026-06-21T03:31:34.6649994Z         "impl",
2026-06-21T03:31:34.6650200Z         "unit"
2026-06-21T03:31:34.6650408Z       ],
2026-06-21T03:31:34.6650597Z       "stages": {
2026-06-21T03:31:34.6650812Z         "doc": {
2026-06-21T03:31:34.6651030Z           "complete": false,
2026-06-21T03:31:34.6651274Z           "evidence": []
2026-06-21T03:31:34.6651499Z         },
2026-06-21T03:31:34.6651708Z         "impl": {
2026-06-21T03:31:34.6651932Z           "complete": true,
2026-06-21T03:31:34.6652156Z           "evidence": [
2026-06-21T03:31:34.6652377Z             {
2026-06-21T03:31:34.6652628Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6652933Z               "line": 409
2026-06-21T03:31:34.6653157Z             },
2026-06-21T03:31:34.6653362Z             {
2026-06-21T03:31:34.6653626Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.6653936Z               "line": 119
2026-06-21T03:31:34.6654155Z             },
2026-06-21T03:31:34.6654357Z             {
2026-06-21T03:31:34.6654614Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.6654909Z               "line": 841
2026-06-21T03:31:34.6655128Z             },
2026-06-21T03:31:34.6655330Z             {
2026-06-21T03:31:34.6655578Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.6655876Z               "line": 852
2026-06-21T03:31:34.6656097Z             },
2026-06-21T03:31:34.6656298Z             {
2026-06-21T03:31:34.6656537Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.6656827Z               "line": 334
2026-06-21T03:31:34.6657042Z             },
2026-06-21T03:31:34.6657252Z             {
2026-06-21T03:31:34.6657471Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6657743Z               "line": 3074
2026-06-21T03:31:34.6657971Z             },
2026-06-21T03:31:34.6658173Z             {
2026-06-21T03:31:34.6658396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6658667Z               "line": 3090
2026-06-21T03:31:34.6658897Z             },
2026-06-21T03:31:34.6659191Z             {
2026-06-21T03:31:34.6659416Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6659682Z               "line": 3170
2026-06-21T03:31:34.6659906Z             }
2026-06-21T03:31:34.6660108Z           ]
2026-06-21T03:31:34.6660413Z         },
2026-06-21T03:31:34.6660602Z         "int": {
2026-06-21T03:31:34.6660821Z           "complete": false,
2026-06-21T03:31:34.6661069Z           "evidence": []
2026-06-21T03:31:34.6661280Z         },
2026-06-21T03:31:34.6661476Z         "unit": {
2026-06-21T03:31:34.6661697Z           "complete": true,
2026-06-21T03:31:34.6661934Z           "evidence": [
2026-06-21T03:31:34.6662153Z             {
2026-06-21T03:31:34.6662397Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6662679Z               "line": 889
2026-06-21T03:31:34.6662898Z             },
2026-06-21T03:31:34.6663088Z             {
2026-06-21T03:31:34.6663332Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6663755Z               "line": 1014
2026-06-21T03:31:34.6663987Z             },
2026-06-21T03:31:34.6664186Z             {
2026-06-21T03:31:34.6664434Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.6664725Z               "line": 215
2026-06-21T03:31:34.6664955Z             }
2026-06-21T03:31:34.6665154Z           ]
2026-06-21T03:31:34.6665355Z         }
2026-06-21T03:31:34.6665546Z       }
2026-06-21T03:31:34.6665741Z     },
2026-06-21T03:31:34.6665946Z     {
2026-06-21T03:31:34.6666148Z       "id": "REQ-DAEMON-1",
2026-06-21T03:31:34.6666460Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T03:31:34.6666791Z       "requiredStages": [
2026-06-21T03:31:34.6667029Z         "impl",
2026-06-21T03:31:34.6667231Z         "unit",
2026-06-21T03:31:34.6667440Z         "int"
2026-06-21T03:31:34.6667634Z       ],
2026-06-21T03:31:34.6667827Z       "stages": {
2026-06-21T03:31:34.6668041Z         "doc": {
2026-06-21T03:31:34.6668255Z           "complete": false,
2026-06-21T03:31:34.6668494Z           "evidence": []
2026-06-21T03:31:34.6668709Z         },
2026-06-21T03:31:34.6668908Z         "impl": {
2026-06-21T03:31:34.6669203Z           "complete": true,
2026-06-21T03:31:34.6669443Z           "evidence": [
2026-06-21T03:31:34.6669661Z             {
2026-06-21T03:31:34.6669918Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6670199Z               "line": 229
2026-06-21T03:31:34.6670419Z             },
2026-06-21T03:31:34.6670615Z             {
2026-06-21T03:31:34.6670843Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6671129Z               "line": 12
2026-06-21T03:31:34.6671345Z             },
2026-06-21T03:31:34.6671538Z             {
2026-06-21T03:31:34.6671779Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6672070Z               "line": 16
2026-06-21T03:31:34.6672290Z             },
2026-06-21T03:31:34.6672489Z             {
2026-06-21T03:31:34.6672737Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6673024Z               "line": 309
2026-06-21T03:31:34.6673244Z             },
2026-06-21T03:31:34.6673438Z             {
2026-06-21T03:31:34.6673687Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6673972Z               "line": 24
2026-06-21T03:31:34.6674184Z             },
2026-06-21T03:31:34.6674381Z             {
2026-06-21T03:31:34.6674623Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6674909Z               "line": 262
2026-06-21T03:31:34.6675124Z             },
2026-06-21T03:31:34.6675323Z             {
2026-06-21T03:31:34.6675558Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6675838Z               "line": 279
2026-06-21T03:31:34.6676054Z             },
2026-06-21T03:31:34.6676248Z             {
2026-06-21T03:31:34.6676482Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6676769Z               "line": 356
2026-06-21T03:31:34.6676981Z             },
2026-06-21T03:31:34.6677175Z             {
2026-06-21T03:31:34.6677410Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6677681Z               "line": 670
2026-06-21T03:31:34.6677919Z             },
2026-06-21T03:31:34.6678214Z             {
2026-06-21T03:31:34.6678448Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:31:34.6678720Z               "line": 15
2026-06-21T03:31:34.6678931Z             },
2026-06-21T03:31:34.6679207Z             {
2026-06-21T03:31:34.6679440Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.6679716Z               "line": 241
2026-06-21T03:31:34.6679930Z             },
2026-06-21T03:31:34.6680120Z             {
2026-06-21T03:31:34.6680346Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T03:31:34.6680617Z               "line": 13
2026-06-21T03:31:34.6680826Z             },
2026-06-21T03:31:34.6681151Z             {
2026-06-21T03:31:34.6681384Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6681660Z               "line": 382
2026-06-21T03:31:34.6681877Z             },
2026-06-21T03:31:34.6682074Z             {
2026-06-21T03:31:34.6682292Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6682570Z               "line": 494
2026-06-21T03:31:34.6682788Z             }
2026-06-21T03:31:34.6682978Z           ]
2026-06-21T03:31:34.6683174Z         },
2026-06-21T03:31:34.6683369Z         "int": {
2026-06-21T03:31:34.6683584Z           "complete": true,
2026-06-21T03:31:34.6683823Z           "evidence": [
2026-06-21T03:31:34.6684043Z             {
2026-06-21T03:31:34.6684333Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T03:31:34.6684668Z               "line": 2
2026-06-21T03:31:34.6684880Z             },
2026-06-21T03:31:34.6685080Z             {
2026-06-21T03:31:34.6685374Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T03:31:34.6685712Z               "line": 16
2026-06-21T03:31:34.6685931Z             },
2026-06-21T03:31:34.6686132Z             {
2026-06-21T03:31:34.6686389Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T03:31:34.6686690Z               "line": 12
2026-06-21T03:31:34.6686914Z             },
2026-06-21T03:31:34.6687109Z             {
2026-06-21T03:31:34.6687357Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T03:31:34.6687656Z               "line": 12
2026-06-21T03:31:34.6687868Z             },
2026-06-21T03:31:34.6688069Z             {
2026-06-21T03:31:34.6688332Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:31:34.6688632Z               "line": 44
2026-06-21T03:31:34.6688847Z             }
2026-06-21T03:31:34.6689118Z           ]
2026-06-21T03:31:34.6689304Z         },
2026-06-21T03:31:34.6689501Z         "unit": {
2026-06-21T03:31:34.6689733Z           "complete": true,
2026-06-21T03:31:34.6689971Z           "evidence": [
2026-06-21T03:31:34.6690187Z             {
2026-06-21T03:31:34.6690433Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6690714Z               "line": 285
2026-06-21T03:31:34.6690929Z             },
2026-06-21T03:31:34.6691130Z             {
2026-06-21T03:31:34.6691368Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6691658Z               "line": 293
2026-06-21T03:31:34.6691877Z             },
2026-06-21T03:31:34.6692074Z             {
2026-06-21T03:31:34.6692307Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6692587Z               "line": 309
2026-06-21T03:31:34.6692806Z             },
2026-06-21T03:31:34.6693000Z             {
2026-06-21T03:31:34.6693238Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6693515Z               "line": 317
2026-06-21T03:31:34.6693744Z             },
2026-06-21T03:31:34.6693949Z             {
2026-06-21T03:31:34.6694191Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6694478Z               "line": 659
2026-06-21T03:31:34.6694693Z             },
2026-06-21T03:31:34.6694898Z             {
2026-06-21T03:31:34.6695155Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6695550Z               "line": 729
2026-06-21T03:31:34.6695762Z             },
2026-06-21T03:31:34.6695963Z             {
2026-06-21T03:31:34.6696206Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6696481Z               "line": 1211
2026-06-21T03:31:34.6696706Z             },
2026-06-21T03:31:34.6696903Z             {
2026-06-21T03:31:34.6697145Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6697426Z               "line": 1248
2026-06-21T03:31:34.6697654Z             },
2026-06-21T03:31:34.6697847Z             {
2026-06-21T03:31:34.6698082Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6698472Z               "line": 1271
2026-06-21T03:31:34.6698677Z             },
2026-06-21T03:31:34.6698877Z             {
2026-06-21T03:31:34.6699197Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6699473Z               "line": 1300
2026-06-21T03:31:34.6699692Z             },
2026-06-21T03:31:34.6699893Z             {
2026-06-21T03:31:34.6700122Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6700409Z               "line": 1348
2026-06-21T03:31:34.6700627Z             },
2026-06-21T03:31:34.6700817Z             {
2026-06-21T03:31:34.6701055Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6701332Z               "line": 1391
2026-06-21T03:31:34.6701555Z             },
2026-06-21T03:31:34.6701757Z             {
2026-06-21T03:31:34.6701995Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:31:34.6702281Z               "line": 106
2026-06-21T03:31:34.6702500Z             },
2026-06-21T03:31:34.6702706Z             {
2026-06-21T03:31:34.6702940Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:31:34.6703214Z               "line": 132
2026-06-21T03:31:34.6703436Z             },
2026-06-21T03:31:34.6703637Z             {
2026-06-21T03:31:34.6703874Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.6704146Z               "line": 530
2026-06-21T03:31:34.6704366Z             }
2026-06-21T03:31:34.6704460Z           ]
2026-06-21T03:31:34.6704567Z         }
2026-06-21T03:31:34.6704666Z       }
2026-06-21T03:31:34.6704756Z     },
2026-06-21T03:31:34.6704862Z     {
2026-06-21T03:31:34.6704971Z       "id": "REQ-DAEMON-2",
2026-06-21T03:31:34.6705143Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T03:31:34.6705263Z       "requiredStages": [
2026-06-21T03:31:34.6705372Z         "impl",
2026-06-21T03:31:34.6705483Z         "unit",
2026-06-21T03:31:34.6705587Z         "int"
2026-06-21T03:31:34.6705692Z       ],
2026-06-21T03:31:34.6705797Z       "stages": {
2026-06-21T03:31:34.6705902Z         "doc": {
2026-06-21T03:31:34.6706010Z           "complete": true,
2026-06-21T03:31:34.6706129Z           "evidence": [
2026-06-21T03:31:34.6706228Z             {
2026-06-21T03:31:34.6706393Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T03:31:34.6706504Z               "line": 250
2026-06-21T03:31:34.6706604Z             }
2026-06-21T03:31:34.6706708Z           ]
2026-06-21T03:31:34.6706800Z         },
2026-06-21T03:31:34.6706905Z         "impl": {
2026-06-21T03:31:34.6707018Z           "complete": true,
2026-06-21T03:31:34.6707124Z           "evidence": [
2026-06-21T03:31:34.6707229Z             {
2026-06-21T03:31:34.6707371Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6707491Z               "line": 23
2026-06-21T03:31:34.6707591Z             },
2026-06-21T03:31:34.6707700Z             {
2026-06-21T03:31:34.6707834Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6707952Z               "line": 844
2026-06-21T03:31:34.6708063Z             },
2026-06-21T03:31:34.6708163Z             {
2026-06-21T03:31:34.6708296Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6708407Z               "line": 869
2026-06-21T03:31:34.6708515Z             },
2026-06-21T03:31:34.6708623Z             {
2026-06-21T03:31:34.6708865Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6709046Z               "line": 1105
2026-06-21T03:31:34.6709152Z             },
2026-06-21T03:31:34.6709260Z             {
2026-06-21T03:31:34.6709409Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6709527Z               "line": 32
2026-06-21T03:31:34.6709623Z             },
2026-06-21T03:31:34.6709728Z             {
2026-06-21T03:31:34.6709885Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6709991Z               "line": 1102
2026-06-21T03:31:34.6710095Z             },
2026-06-21T03:31:34.6710301Z             {
2026-06-21T03:31:34.6710444Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6710548Z               "line": 1813
2026-06-21T03:31:34.6710654Z             },
2026-06-21T03:31:34.6710762Z             {
2026-06-21T03:31:34.6710902Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6711016Z               "line": 2100
2026-06-21T03:31:34.6711125Z             },
2026-06-21T03:31:34.6711217Z             {
2026-06-21T03:31:34.6711363Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:31:34.6711472Z               "line": 11
2026-06-21T03:31:34.6711577Z             },
2026-06-21T03:31:34.6711678Z             {
2026-06-21T03:31:34.6711819Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6711931Z               "line": 153
2026-06-21T03:31:34.6712035Z             },
2026-06-21T03:31:34.6712144Z             {
2026-06-21T03:31:34.6712283Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6712406Z               "line": 343
2026-06-21T03:31:34.6712503Z             },
2026-06-21T03:31:34.6712598Z             {
2026-06-21T03:31:34.6712745Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6712851Z               "line": 13
2026-06-21T03:31:34.6712960Z             },
2026-06-21T03:31:34.6713065Z             {
2026-06-21T03:31:34.6713218Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6713327Z               "line": 27
2026-06-21T03:31:34.6713437Z             },
2026-06-21T03:31:34.6713543Z             {
2026-06-21T03:31:34.6713684Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6713793Z               "line": 147
2026-06-21T03:31:34.6713888Z             },
2026-06-21T03:31:34.6713987Z             {
2026-06-21T03:31:34.6714130Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6714245Z               "line": 632
2026-06-21T03:31:34.6714348Z             },
2026-06-21T03:31:34.6714454Z             {
2026-06-21T03:31:34.6714588Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6714696Z               "line": 853
2026-06-21T03:31:34.6714802Z             },
2026-06-21T03:31:34.6714907Z             {
2026-06-21T03:31:34.6715055Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6715165Z               "line": 1000
2026-06-21T03:31:34.6715269Z             },
2026-06-21T03:31:34.6715374Z             {
2026-06-21T03:31:34.6715508Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6715617Z               "line": 1089
2026-06-21T03:31:34.6715718Z             },
2026-06-21T03:31:34.6715827Z             {
2026-06-21T03:31:34.6715969Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6716076Z               "line": 1211
2026-06-21T03:31:34.6716184Z             },
2026-06-21T03:31:34.6716284Z             {
2026-06-21T03:31:34.6716439Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:31:34.6716555Z               "line": 10
2026-06-21T03:31:34.6716660Z             }
2026-06-21T03:31:34.6716760Z           ]
2026-06-21T03:31:34.6716863Z         },
2026-06-21T03:31:34.6716968Z         "int": {
2026-06-21T03:31:34.6717083Z           "complete": true,
2026-06-21T03:31:34.6717197Z           "evidence": [
2026-06-21T03:31:34.6717412Z             {
2026-06-21T03:31:34.6717563Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.6717674Z               "line": 17
2026-06-21T03:31:34.6717779Z             },
2026-06-21T03:31:34.6717888Z             {
2026-06-21T03:31:34.6718027Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.6718137Z               "line": 90
2026-06-21T03:31:34.6718241Z             },
2026-06-21T03:31:34.6718333Z             {
2026-06-21T03:31:34.6718485Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.6718590Z               "line": 110
2026-06-21T03:31:34.6718695Z             },
2026-06-21T03:31:34.6718871Z             {
2026-06-21T03:31:34.6719299Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.6719406Z               "line": 186
2026-06-21T03:31:34.6719511Z             },
2026-06-21T03:31:34.6719616Z             {
2026-06-21T03:31:34.6719763Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.6719888Z               "line": 309
2026-06-21T03:31:34.6719988Z             },
2026-06-21T03:31:34.6720092Z             {
2026-06-21T03:31:34.6720246Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T03:31:34.6720351Z               "line": 128
2026-06-21T03:31:34.6720459Z             },
2026-06-21T03:31:34.6720551Z             {
2026-06-21T03:31:34.6720699Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:31:34.6720798Z               "line": 59
2026-06-21T03:31:34.6720909Z             }
2026-06-21T03:31:34.6721014Z           ]
2026-06-21T03:31:34.6721118Z         },
2026-06-21T03:31:34.6721243Z         "unit": {
2026-06-21T03:31:34.6721347Z           "complete": true,
2026-06-21T03:31:34.6721462Z           "evidence": [
2026-06-21T03:31:34.6721562Z             {
2026-06-21T03:31:34.6721709Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:31:34.6721815Z               "line": 62
2026-06-21T03:31:34.6721928Z             },
2026-06-21T03:31:34.6722037Z             {
2026-06-21T03:31:34.6722176Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:31:34.6722294Z               "line": 76
2026-06-21T03:31:34.6722389Z             },
2026-06-21T03:31:34.6722505Z             {
2026-06-21T03:31:34.6722642Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:31:34.6722743Z               "line": 88
2026-06-21T03:31:34.6725953Z             },
2026-06-21T03:31:34.6726096Z             {
2026-06-21T03:31:34.6726264Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.6726378Z               "line": 347
2026-06-21T03:31:34.6726497Z             },
2026-06-21T03:31:34.6726593Z             {
2026-06-21T03:31:34.6726740Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6726850Z               "line": 873
2026-06-21T03:31:34.6726951Z             },
2026-06-21T03:31:34.6727055Z             {
2026-06-21T03:31:34.6727192Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6727311Z               "line": 881
2026-06-21T03:31:34.6727419Z             },
2026-06-21T03:31:34.6727518Z             {
2026-06-21T03:31:34.6727658Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6727762Z               "line": 898
2026-06-21T03:31:34.6727866Z             },
2026-06-21T03:31:34.6727973Z             {
2026-06-21T03:31:34.6728100Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6728216Z               "line": 974
2026-06-21T03:31:34.6728316Z             },
2026-06-21T03:31:34.6728420Z             {
2026-06-21T03:31:34.6728563Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6728682Z               "line": 1282
2026-06-21T03:31:34.6728787Z             },
2026-06-21T03:31:34.6728878Z             {
2026-06-21T03:31:34.6729116Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6729231Z               "line": 1294
2026-06-21T03:31:34.6729494Z             },
2026-06-21T03:31:34.6729584Z             {
2026-06-21T03:31:34.6729744Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:31:34.6729849Z               "line": 110
2026-06-21T03:31:34.6729953Z             },
2026-06-21T03:31:34.6730056Z             {
2026-06-21T03:31:34.6730196Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:31:34.6730310Z               "line": 145
2026-06-21T03:31:34.6730404Z             }
2026-06-21T03:31:34.6730506Z           ]
2026-06-21T03:31:34.6730606Z         }
2026-06-21T03:31:34.6730705Z       }
2026-06-21T03:31:34.6730806Z     },
2026-06-21T03:31:34.6730906Z     {
2026-06-21T03:31:34.6731121Z       "id": "REQ-DAEMON-3",
2026-06-21T03:31:34.6731315Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T03:31:34.6731426Z       "requiredStages": [
2026-06-21T03:31:34.6731535Z         "impl",
2026-06-21T03:31:34.6731635Z         "unit",
2026-06-21T03:31:34.6731736Z         "int"
2026-06-21T03:31:34.6731850Z       ],
2026-06-21T03:31:34.6731949Z       "stages": {
2026-06-21T03:31:34.6732056Z         "doc": {
2026-06-21T03:31:34.6732192Z           "complete": false,
2026-06-21T03:31:34.6732303Z           "evidence": []
2026-06-21T03:31:34.6732394Z         },
2026-06-21T03:31:34.6732507Z         "impl": {
2026-06-21T03:31:34.6732616Z           "complete": true,
2026-06-21T03:31:34.6732731Z           "evidence": [
2026-06-21T03:31:34.6732832Z             {
2026-06-21T03:31:34.6732988Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6733089Z               "line": 14
2026-06-21T03:31:34.6733193Z             },
2026-06-21T03:31:34.6733298Z             {
2026-06-21T03:31:34.6733451Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:31:34.6733560Z               "line": 11
2026-06-21T03:31:34.6733661Z             },
2026-06-21T03:31:34.6733761Z             {
2026-06-21T03:31:34.6733894Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.6734005Z               "line": 305
2026-06-21T03:31:34.6734113Z             },
2026-06-21T03:31:34.6734218Z             {
2026-06-21T03:31:34.6734348Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6734447Z               "line": 1956
2026-06-21T03:31:34.6734557Z             },
2026-06-21T03:31:34.6734663Z             {
2026-06-21T03:31:34.6734785Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6734899Z               "line": 4235
2026-06-21T03:31:34.6734999Z             },
2026-06-21T03:31:34.6735107Z             {
2026-06-21T03:31:34.6735235Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6735346Z               "line": 4256
2026-06-21T03:31:34.6735459Z             }
2026-06-21T03:31:34.6735564Z           ]
2026-06-21T03:31:34.6735670Z         },
2026-06-21T03:31:34.6735764Z         "int": {
2026-06-21T03:31:34.6735875Z           "complete": true,
2026-06-21T03:31:34.6735980Z           "evidence": [
2026-06-21T03:31:34.6736089Z             {
2026-06-21T03:31:34.6736247Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6736352Z               "line": 49
2026-06-21T03:31:34.6736456Z             },
2026-06-21T03:31:34.6736553Z             {
2026-06-21T03:31:34.6736685Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.6736789Z               "line": 487
2026-06-21T03:31:34.6736891Z             }
2026-06-21T03:31:34.6736990Z           ]
2026-06-21T03:31:34.6737090Z         },
2026-06-21T03:31:34.6737192Z         "unit": {
2026-06-21T03:31:34.6737295Z           "complete": true,
2026-06-21T03:31:34.6737410Z           "evidence": [
2026-06-21T03:31:34.6737502Z             {
2026-06-21T03:31:34.6737653Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6737761Z               "line": 1553
2026-06-21T03:31:34.6737866Z             },
2026-06-21T03:31:34.6737969Z             {
2026-06-21T03:31:34.6738093Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6738279Z               "line": 10715
2026-06-21T03:31:34.6738374Z             }
2026-06-21T03:31:34.6738480Z           ]
2026-06-21T03:31:34.6738585Z         }
2026-06-21T03:31:34.6738684Z       }
2026-06-21T03:31:34.6738790Z     },
2026-06-21T03:31:34.6738890Z     {
2026-06-21T03:31:34.6739080Z       "id": "REQ-DAEMON-4",
2026-06-21T03:31:34.6739237Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T03:31:34.6739347Z       "requiredStages": [
2026-06-21T03:31:34.6739448Z         "impl",
2026-06-21T03:31:34.6739552Z         "unit",
2026-06-21T03:31:34.6739652Z         "int"
2026-06-21T03:31:34.6739754Z       ],
2026-06-21T03:31:34.6739857Z       "stages": {
2026-06-21T03:31:34.6740049Z         "doc": {
2026-06-21T03:31:34.6740177Z           "complete": false,
2026-06-21T03:31:34.6740290Z           "evidence": []
2026-06-21T03:31:34.6740391Z         },
2026-06-21T03:31:34.6740494Z         "impl": {
2026-06-21T03:31:34.6740607Z           "complete": true,
2026-06-21T03:31:34.6740708Z           "evidence": [
2026-06-21T03:31:34.6740809Z             {
2026-06-21T03:31:34.6740955Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6741066Z               "line": 464
2026-06-21T03:31:34.6741157Z             },
2026-06-21T03:31:34.6741260Z             {
2026-06-21T03:31:34.6741395Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6741504Z               "line": 529
2026-06-21T03:31:34.6741599Z             },
2026-06-21T03:31:34.6741695Z             {
2026-06-21T03:31:34.6741833Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6741933Z               "line": 551
2026-06-21T03:31:34.6742039Z             }
2026-06-21T03:31:34.6742153Z           ]
2026-06-21T03:31:34.6742253Z         },
2026-06-21T03:31:34.6742358Z         "int": {
2026-06-21T03:31:34.6742472Z           "complete": true,
2026-06-21T03:31:34.6742587Z           "evidence": [
2026-06-21T03:31:34.6742687Z             {
2026-06-21T03:31:34.6742843Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T03:31:34.6742959Z               "line": 42
2026-06-21T03:31:34.6743063Z             }
2026-06-21T03:31:34.6743167Z           ]
2026-06-21T03:31:34.6743267Z         },
2026-06-21T03:31:34.6743378Z         "unit": {
2026-06-21T03:31:34.6743486Z           "complete": true,
2026-06-21T03:31:34.6743601Z           "evidence": [
2026-06-21T03:31:34.6743702Z             {
2026-06-21T03:31:34.6743844Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.6743955Z               "line": 428
2026-06-21T03:31:34.6744059Z             },
2026-06-21T03:31:34.6744154Z             {
2026-06-21T03:31:34.6744298Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6744416Z               "line": 957
2026-06-21T03:31:34.6744517Z             },
2026-06-21T03:31:34.6744617Z             {
2026-06-21T03:31:34.6744759Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6744870Z               "line": 1027
2026-06-21T03:31:34.6744983Z             },
2026-06-21T03:31:34.6745079Z             {
2026-06-21T03:31:34.6745228Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6745331Z               "line": 1057
2026-06-21T03:31:34.6745435Z             },
2026-06-21T03:31:34.6745531Z             {
2026-06-21T03:31:34.6745676Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6745791Z               "line": 1090
2026-06-21T03:31:34.6745887Z             }
2026-06-21T03:31:34.6745991Z           ]
2026-06-21T03:31:34.6746096Z         }
2026-06-21T03:31:34.6746192Z       }
2026-06-21T03:31:34.6746278Z     },
2026-06-21T03:31:34.6746386Z     {
2026-06-21T03:31:34.6746493Z       "id": "REQ-DAEMON-5",
2026-06-21T03:31:34.6747903Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T03:31:34.6748137Z       "requiredStages": [
2026-06-21T03:31:34.6748241Z         "impl",
2026-06-21T03:31:34.6748336Z         "unit"
2026-06-21T03:31:34.6748431Z       ],
2026-06-21T03:31:34.6748539Z       "stages": {
2026-06-21T03:31:34.6748643Z         "doc": {
2026-06-21T03:31:34.6748754Z           "complete": false,
2026-06-21T03:31:34.6748868Z           "evidence": []
2026-06-21T03:31:34.6749054Z         },
2026-06-21T03:31:34.6749164Z         "impl": {
2026-06-21T03:31:34.6749383Z           "complete": true,
2026-06-21T03:31:34.6749488Z           "evidence": [
2026-06-21T03:31:34.6749592Z             {
2026-06-21T03:31:34.6749736Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6749855Z               "line": 476
2026-06-21T03:31:34.6749965Z             },
2026-06-21T03:31:34.6750074Z             {
2026-06-21T03:31:34.6750222Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6750333Z               "line": 769
2026-06-21T03:31:34.6750441Z             },
2026-06-21T03:31:34.6750541Z             {
2026-06-21T03:31:34.6750685Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6750784Z               "line": 782
2026-06-21T03:31:34.6750888Z             },
2026-06-21T03:31:34.6750988Z             {
2026-06-21T03:31:34.6751129Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6751244Z               "line": 800
2026-06-21T03:31:34.6751345Z             },
2026-06-21T03:31:34.6751463Z             {
2026-06-21T03:31:34.6751597Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6751702Z               "line": 841
2026-06-21T03:31:34.6751810Z             }
2026-06-21T03:31:34.6751908Z           ]
2026-06-21T03:31:34.6752007Z         },
2026-06-21T03:31:34.6752107Z         "int": {
2026-06-21T03:31:34.6752250Z           "complete": false,
2026-06-21T03:31:34.6752364Z           "evidence": []
2026-06-21T03:31:34.6752464Z         },
2026-06-21T03:31:34.6752570Z         "unit": {
2026-06-21T03:31:34.6752669Z           "complete": true,
2026-06-21T03:31:34.6752779Z           "evidence": [
2026-06-21T03:31:34.6752880Z             {
2026-06-21T03:31:34.6753027Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6753137Z               "line": 1189
2026-06-21T03:31:34.6753229Z             },
2026-06-21T03:31:34.6753336Z             {
2026-06-21T03:31:34.6753477Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6753590Z               "line": 1213
2026-06-21T03:31:34.6753689Z             },
2026-06-21T03:31:34.6753794Z             {
2026-06-21T03:31:34.6753952Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.6754051Z               "line": 1239
2026-06-21T03:31:34.6754161Z             }
2026-06-21T03:31:34.6754257Z           ]
2026-06-21T03:31:34.6754375Z         }
2026-06-21T03:31:34.6754472Z       }
2026-06-21T03:31:34.6754576Z     },
2026-06-21T03:31:34.6754675Z     {
2026-06-21T03:31:34.6754782Z       "id": "REQ-DAEMON-6",
2026-06-21T03:31:34.6756819Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T03:31:34.6756956Z       "requiredStages": [
2026-06-21T03:31:34.6757048Z         "impl",
2026-06-21T03:31:34.6757252Z         "unit"
2026-06-21T03:31:34.6757353Z       ],
2026-06-21T03:31:34.6757457Z       "stages": {
2026-06-21T03:31:34.6757562Z         "doc": {
2026-06-21T03:31:34.6757677Z           "complete": false,
2026-06-21T03:31:34.6757781Z           "evidence": []
2026-06-21T03:31:34.6757872Z         },
2026-06-21T03:31:34.6757983Z         "impl": {
2026-06-21T03:31:34.6758096Z           "complete": true,
2026-06-21T03:31:34.6758201Z           "evidence": [
2026-06-21T03:31:34.6758302Z             {
2026-06-21T03:31:34.6758463Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6758579Z               "line": 495
2026-06-21T03:31:34.6758749Z             },
2026-06-21T03:31:34.6758853Z             {
2026-06-21T03:31:34.6759080Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6759189Z               "line": 526
2026-06-21T03:31:34.6759295Z             },
2026-06-21T03:31:34.6759395Z             {
2026-06-21T03:31:34.6759547Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6759657Z               "line": 55
2026-06-21T03:31:34.6759756Z             },
2026-06-21T03:31:34.6759862Z             {
2026-06-21T03:31:34.6760010Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6760119Z               "line": 70
2026-06-21T03:31:34.6760225Z             },
2026-06-21T03:31:34.6760334Z             {
2026-06-21T03:31:34.6760462Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6760574Z               "line": 2020
2026-06-21T03:31:34.6760672Z             },
2026-06-21T03:31:34.6760768Z             {
2026-06-21T03:31:34.6760893Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6761020Z               "line": 2046
2026-06-21T03:31:34.6761121Z             }
2026-06-21T03:31:34.6761213Z           ]
2026-06-21T03:31:34.6761311Z         },
2026-06-21T03:31:34.6761415Z         "int": {
2026-06-21T03:31:34.6761535Z           "complete": false,
2026-06-21T03:31:34.6761637Z           "evidence": []
2026-06-21T03:31:34.6761751Z         },
2026-06-21T03:31:34.6761861Z         "unit": {
2026-06-21T03:31:34.6761971Z           "complete": true,
2026-06-21T03:31:34.6762085Z           "evidence": [
2026-06-21T03:31:34.6762186Z             {
2026-06-21T03:31:34.6762333Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6762443Z               "line": 288
2026-06-21T03:31:34.6762548Z             },
2026-06-21T03:31:34.6762652Z             {
2026-06-21T03:31:34.6762783Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6762891Z               "line": 299
2026-06-21T03:31:34.6762991Z             },
2026-06-21T03:31:34.6763102Z             {
2026-06-21T03:31:34.6763239Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6763349Z               "line": 325
2026-06-21T03:31:34.6763455Z             },
2026-06-21T03:31:34.6763558Z             {
2026-06-21T03:31:34.6763702Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6763817Z               "line": 351
2026-06-21T03:31:34.6763926Z             }
2026-06-21T03:31:34.6764027Z           ]
2026-06-21T03:31:34.6764122Z         }
2026-06-21T03:31:34.6764230Z       }
2026-06-21T03:31:34.6764320Z     },
2026-06-21T03:31:34.6764421Z     {
2026-06-21T03:31:34.6764531Z       "id": "REQ-DAEMON-7",
2026-06-21T03:31:34.6765986Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T03:31:34.6766113Z       "requiredStages": [
2026-06-21T03:31:34.6766213Z         "impl",
2026-06-21T03:31:34.6766310Z         "unit"
2026-06-21T03:31:34.6766532Z       ],
2026-06-21T03:31:34.6766641Z       "stages": {
2026-06-21T03:31:34.6766750Z         "doc": {
2026-06-21T03:31:34.6766858Z           "complete": false,
2026-06-21T03:31:34.6766973Z           "evidence": []
2026-06-21T03:31:34.6767070Z         },
2026-06-21T03:31:34.6767178Z         "impl": {
2026-06-21T03:31:34.6767288Z           "complete": true,
2026-06-21T03:31:34.6767393Z           "evidence": [
2026-06-21T03:31:34.6767502Z             {
2026-06-21T03:31:34.6767651Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6767764Z               "line": 545
2026-06-21T03:31:34.6767865Z             },
2026-06-21T03:31:34.6767975Z             {
2026-06-21T03:31:34.6768223Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.6768332Z               "line": 610
2026-06-21T03:31:34.6768437Z             },
2026-06-21T03:31:34.6768548Z             {
2026-06-21T03:31:34.6768694Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6768804Z               "line": 89
2026-06-21T03:31:34.6768915Z             },
2026-06-21T03:31:34.6769081Z             {
2026-06-21T03:31:34.6769220Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6769323Z               "line": 1957
2026-06-21T03:31:34.6769427Z             }
2026-06-21T03:31:34.6769537Z           ]
2026-06-21T03:31:34.6769640Z         },
2026-06-21T03:31:34.6769745Z         "int": {
2026-06-21T03:31:34.6769860Z           "complete": false,
2026-06-21T03:31:34.6769969Z           "evidence": []
2026-06-21T03:31:34.6770069Z         },
2026-06-21T03:31:34.6770175Z         "unit": {
2026-06-21T03:31:34.6770289Z           "complete": true,
2026-06-21T03:31:34.6770393Z           "evidence": [
2026-06-21T03:31:34.6770499Z             {
2026-06-21T03:31:34.6770641Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6770751Z               "line": 314
2026-06-21T03:31:34.6770861Z             },
2026-06-21T03:31:34.6770960Z             {
2026-06-21T03:31:34.6771100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6771204Z               "line": 8102
2026-06-21T03:31:34.6771309Z             }
2026-06-21T03:31:34.6771415Z           ]
2026-06-21T03:31:34.6771514Z         }
2026-06-21T03:31:34.6771624Z       }
2026-06-21T03:31:34.6771725Z     },
2026-06-21T03:31:34.6771829Z     {
2026-06-21T03:31:34.6771938Z       "id": "REQ-DAEMON-8",
2026-06-21T03:31:34.6772936Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T03:31:34.6773056Z       "requiredStages": [
2026-06-21T03:31:34.6773161Z         "impl",
2026-06-21T03:31:34.6773269Z         "unit"
2026-06-21T03:31:34.6773367Z       ],
2026-06-21T03:31:34.6773475Z       "stages": {
2026-06-21T03:31:34.6773580Z         "doc": {
2026-06-21T03:31:34.6773700Z           "complete": false,
2026-06-21T03:31:34.6773809Z           "evidence": []
2026-06-21T03:31:34.6773913Z         },
2026-06-21T03:31:34.6774020Z         "impl": {
2026-06-21T03:31:34.6774123Z           "complete": true,
2026-06-21T03:31:34.6774248Z           "evidence": [
2026-06-21T03:31:34.6774349Z             {
2026-06-21T03:31:34.6774491Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6774606Z               "line": 445
2026-06-21T03:31:34.6774710Z             },
2026-06-21T03:31:34.6774819Z             {
2026-06-21T03:31:34.6774958Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6775081Z               "line": 56
2026-06-21T03:31:34.6775176Z             }
2026-06-21T03:31:34.6775287Z           ]
2026-06-21T03:31:34.6775401Z         },
2026-06-21T03:31:34.6775505Z         "int": {
2026-06-21T03:31:34.6775620Z           "complete": false,
2026-06-21T03:31:34.6775725Z           "evidence": []
2026-06-21T03:31:34.6775930Z         },
2026-06-21T03:31:34.6776035Z         "unit": {
2026-06-21T03:31:34.6776144Z           "complete": true,
2026-06-21T03:31:34.6776250Z           "evidence": [
2026-06-21T03:31:34.6776359Z             {
2026-06-21T03:31:34.6776507Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6776617Z               "line": 288
2026-06-21T03:31:34.6776726Z             },
2026-06-21T03:31:34.6776827Z             {
2026-06-21T03:31:34.6776978Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:31:34.6777087Z               "line": 325
2026-06-21T03:31:34.6777188Z             }
2026-06-21T03:31:34.6777291Z           ]
2026-06-21T03:31:34.6777548Z         }
2026-06-21T03:31:34.6777653Z       }
2026-06-21T03:31:34.6777752Z     },
2026-06-21T03:31:34.6777858Z     {
2026-06-21T03:31:34.6777982Z       "id": "REQ-DAEMON-9",
2026-06-21T03:31:34.6780453Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T03:31:34.6780605Z       "requiredStages": [
2026-06-21T03:31:34.6780716Z         "impl",
2026-06-21T03:31:34.6780821Z         "unit"
2026-06-21T03:31:34.6780929Z       ],
2026-06-21T03:31:34.6781031Z       "stages": {
2026-06-21T03:31:34.6781135Z         "doc": {
2026-06-21T03:31:34.6781244Z           "complete": false,
2026-06-21T03:31:34.6781355Z           "evidence": []
2026-06-21T03:31:34.6781454Z         },
2026-06-21T03:31:34.6781564Z         "impl": {
2026-06-21T03:31:34.6781670Z           "complete": true,
2026-06-21T03:31:34.6781783Z           "evidence": [
2026-06-21T03:31:34.6781878Z             {
2026-06-21T03:31:34.6782042Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6782150Z               "line": 276
2026-06-21T03:31:34.6782256Z             },
2026-06-21T03:31:34.6782357Z             {
2026-06-21T03:31:34.6782507Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6782616Z               "line": 1153
2026-06-21T03:31:34.6782721Z             },
2026-06-21T03:31:34.6782815Z             {
2026-06-21T03:31:34.6782958Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6783073Z               "line": 197
2026-06-21T03:31:34.6783177Z             },
2026-06-21T03:31:34.6783278Z             {
2026-06-21T03:31:34.6783411Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6783524Z               "line": 344
2026-06-21T03:31:34.6783631Z             },
2026-06-21T03:31:34.6783730Z             {
2026-06-21T03:31:34.6783864Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6783978Z               "line": 381
2026-06-21T03:31:34.6784078Z             },
2026-06-21T03:31:34.6784178Z             {
2026-06-21T03:31:34.6784307Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6784416Z               "line": 2075
2026-06-21T03:31:34.6784522Z             }
2026-06-21T03:31:34.6784631Z           ]
2026-06-21T03:31:34.6784731Z         },
2026-06-21T03:31:34.6784852Z         "int": {
2026-06-21T03:31:34.6784965Z           "complete": false,
2026-06-21T03:31:34.6785075Z           "evidence": []
2026-06-21T03:31:34.6785186Z         },
2026-06-21T03:31:34.6785289Z         "unit": {
2026-06-21T03:31:34.6785398Z           "complete": true,
2026-06-21T03:31:34.6785503Z           "evidence": [
2026-06-21T03:31:34.6785722Z             {
2026-06-21T03:31:34.6785875Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6785984Z               "line": 1158
2026-06-21T03:31:34.6786094Z             },
2026-06-21T03:31:34.6786195Z             {
2026-06-21T03:31:34.6786327Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6786428Z               "line": 10580
2026-06-21T03:31:34.6786528Z             }
2026-06-21T03:31:34.6786628Z           ]
2026-06-21T03:31:34.6786733Z         }
2026-06-21T03:31:34.6786838Z       }
2026-06-21T03:31:34.6786938Z     },
2026-06-21T03:31:34.6787038Z     {
2026-06-21T03:31:34.6787144Z       "id": "REQ-DOCS-1",
2026-06-21T03:31:34.6787487Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T03:31:34.6787605Z       "requiredStages": [
2026-06-21T03:31:34.6787709Z         "doc",
2026-06-21T03:31:34.6787814Z         "impl"
2026-06-21T03:31:34.6787917Z       ],
2026-06-21T03:31:34.6788041Z       "stages": {
2026-06-21T03:31:34.6788137Z         "doc": {
2026-06-21T03:31:34.6788260Z           "complete": true,
2026-06-21T03:31:34.6788375Z           "evidence": [
2026-06-21T03:31:34.6788476Z             {
2026-06-21T03:31:34.6788603Z               "path": "docs-site/src/index.md",
2026-06-21T03:31:34.6788709Z               "line": 50
2026-06-21T03:31:34.6788814Z             }
2026-06-21T03:31:34.6788913Z           ]
2026-06-21T03:31:34.6789095Z         },
2026-06-21T03:31:34.6789205Z         "impl": {
2026-06-21T03:31:34.6789309Z           "complete": true,
2026-06-21T03:31:34.6789429Z           "evidence": [
2026-06-21T03:31:34.6789529Z             {
2026-06-21T03:31:34.6789687Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T03:31:34.6789791Z               "line": 12
2026-06-21T03:31:34.6789895Z             },
2026-06-21T03:31:34.6790016Z             {
2026-06-21T03:31:34.6790138Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.6790259Z               "line": 14
2026-06-21T03:31:34.6790364Z             }
2026-06-21T03:31:34.6790467Z           ]
2026-06-21T03:31:34.6790562Z         },
2026-06-21T03:31:34.6790672Z         "int": {
2026-06-21T03:31:34.6790789Z           "complete": false,
2026-06-21T03:31:34.6790898Z           "evidence": []
2026-06-21T03:31:34.6791009Z         },
2026-06-21T03:31:34.6791104Z         "unit": {
2026-06-21T03:31:34.6791218Z           "complete": false,
2026-06-21T03:31:34.6791324Z           "evidence": []
2026-06-21T03:31:34.6791433Z         }
2026-06-21T03:31:34.6791533Z       }
2026-06-21T03:31:34.6791634Z     },
2026-06-21T03:31:34.6791738Z     {
2026-06-21T03:31:34.6791843Z       "id": "REQ-DOCS-2",
2026-06-21T03:31:34.6792043Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T03:31:34.6792158Z       "requiredStages": [
2026-06-21T03:31:34.6792268Z         "doc",
2026-06-21T03:31:34.6792376Z         "int"
2026-06-21T03:31:34.6792477Z       ],
2026-06-21T03:31:34.6792583Z       "stages": {
2026-06-21T03:31:34.6792686Z         "doc": {
2026-06-21T03:31:34.6792802Z           "complete": true,
2026-06-21T03:31:34.6792912Z           "evidence": [
2026-06-21T03:31:34.6793010Z             {
2026-06-21T03:31:34.6793215Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T03:31:34.6793323Z               "line": 3
2026-06-21T03:31:34.6793417Z             },
2026-06-21T03:31:34.6793523Z             {
2026-06-21T03:31:34.6793675Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T03:31:34.6793785Z               "line": 3
2026-06-21T03:31:34.6793881Z             },
2026-06-21T03:31:34.6793990Z             {
2026-06-21T03:31:34.6794153Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T03:31:34.6794257Z               "line": 3
2026-06-21T03:31:34.6794361Z             }
2026-06-21T03:31:34.6794467Z           ]
2026-06-21T03:31:34.6794566Z         },
2026-06-21T03:31:34.6794676Z         "impl": {
2026-06-21T03:31:34.6794797Z           "complete": false,
2026-06-21T03:31:34.6795000Z           "evidence": []
2026-06-21T03:31:34.6795107Z         },
2026-06-21T03:31:34.6795210Z         "int": {
2026-06-21T03:31:34.6795320Z           "complete": true,
2026-06-21T03:31:34.6795426Z           "evidence": [
2026-06-21T03:31:34.6795534Z             {
2026-06-21T03:31:34.6795688Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:31:34.6795789Z               "line": 14
2026-06-21T03:31:34.6795891Z             }
2026-06-21T03:31:34.6795995Z           ]
2026-06-21T03:31:34.6796102Z         },
2026-06-21T03:31:34.6796201Z         "unit": {
2026-06-21T03:31:34.6796315Z           "complete": false,
2026-06-21T03:31:34.6796544Z           "evidence": []
2026-06-21T03:31:34.6796644Z         }
2026-06-21T03:31:34.6796750Z       }
2026-06-21T03:31:34.6796850Z     },
2026-06-21T03:31:34.6796954Z     {
2026-06-21T03:31:34.6797070Z       "id": "REQ-DOCS-3",
2026-06-21T03:31:34.6797313Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T03:31:34.6797436Z       "requiredStages": [
2026-06-21T03:31:34.6797546Z         "doc"
2026-06-21T03:31:34.6797647Z       ],
2026-06-21T03:31:34.6797751Z       "stages": {
2026-06-21T03:31:34.6797851Z         "doc": {
2026-06-21T03:31:34.6797961Z           "complete": true,
2026-06-21T03:31:34.6798080Z           "evidence": [
2026-06-21T03:31:34.6798179Z             {
2026-06-21T03:31:34.6798318Z               "path": "docs-site/src/index.md",
2026-06-21T03:31:34.6798430Z               "line": 42
2026-06-21T03:31:34.6798520Z             }
2026-06-21T03:31:34.6798625Z           ]
2026-06-21T03:31:34.6798726Z         },
2026-06-21T03:31:34.6798853Z         "impl": {
2026-06-21T03:31:34.6799506Z           "complete": false,
2026-06-21T03:31:34.6799622Z           "evidence": []
2026-06-21T03:31:34.6799717Z         },
2026-06-21T03:31:34.6799816Z         "int": {
2026-06-21T03:31:34.6799932Z           "complete": false,
2026-06-21T03:31:34.6800032Z           "evidence": []
2026-06-21T03:31:34.6800141Z         },
2026-06-21T03:31:34.6800243Z         "unit": {
2026-06-21T03:31:34.6800356Z           "complete": false,
2026-06-21T03:31:34.6800460Z           "evidence": []
2026-06-21T03:31:34.6800562Z         }
2026-06-21T03:31:34.6800661Z       }
2026-06-21T03:31:34.6800766Z     },
2026-06-21T03:31:34.6800873Z     {
2026-06-21T03:31:34.6800985Z       "id": "REQ-DOCS-4",
2026-06-21T03:31:34.6801208Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T03:31:34.6801335Z       "requiredStages": [
2026-06-21T03:31:34.6801430Z         "doc",
2026-06-21T03:31:34.6801535Z         "impl",
2026-06-21T03:31:34.6801636Z         "unit"
2026-06-21T03:31:34.6801744Z       ],
2026-06-21T03:31:34.6801850Z       "stages": {
2026-06-21T03:31:34.6801955Z         "doc": {
2026-06-21T03:31:34.6802073Z           "complete": true,
2026-06-21T03:31:34.6802175Z           "evidence": [
2026-06-21T03:31:34.6802284Z             {
2026-06-21T03:31:34.6802408Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T03:31:34.6802532Z               "line": 35
2026-06-21T03:31:34.6802627Z             }
2026-06-21T03:31:34.6802727Z           ]
2026-06-21T03:31:34.6802833Z         },
2026-06-21T03:31:34.6802936Z         "impl": {
2026-06-21T03:31:34.6803052Z           "complete": true,
2026-06-21T03:31:34.6803162Z           "evidence": [
2026-06-21T03:31:34.6803265Z             {
2026-06-21T03:31:34.6803425Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6803538Z               "line": 746
2026-06-21T03:31:34.6803642Z             },
2026-06-21T03:31:34.6803742Z             {
2026-06-21T03:31:34.6803878Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.6803992Z               "line": 15
2026-06-21T03:31:34.6804097Z             }
2026-06-21T03:31:34.6804203Z           ]
2026-06-21T03:31:34.6804297Z         },
2026-06-21T03:31:34.6804398Z         "int": {
2026-06-21T03:31:34.6804508Z           "complete": false,
2026-06-21T03:31:34.6804722Z           "evidence": []
2026-06-21T03:31:34.6804827Z         },
2026-06-21T03:31:34.6804936Z         "unit": {
2026-06-21T03:31:34.6805061Z           "complete": true,
2026-06-21T03:31:34.6805170Z           "evidence": [
2026-06-21T03:31:34.6805275Z             {
2026-06-21T03:31:34.6805428Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6805546Z               "line": 1682
2026-06-21T03:31:34.6805643Z             }
2026-06-21T03:31:34.6805747Z           ]
2026-06-21T03:31:34.6805852Z         }
2026-06-21T03:31:34.6805958Z       }
2026-06-21T03:31:34.6806067Z     },
2026-06-21T03:31:34.6806167Z     {
2026-06-21T03:31:34.6806287Z       "id": "REQ-DOCS-5",
2026-06-21T03:31:34.6806628Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T03:31:34.6806748Z       "requiredStages": [
2026-06-21T03:31:34.6806861Z         "impl",
2026-06-21T03:31:34.6806962Z         "int"
2026-06-21T03:31:34.6807063Z       ],
2026-06-21T03:31:34.6807162Z       "stages": {
2026-06-21T03:31:34.6807277Z         "doc": {
2026-06-21T03:31:34.6807410Z           "complete": false,
2026-06-21T03:31:34.6807524Z           "evidence": []
2026-06-21T03:31:34.6807630Z         },
2026-06-21T03:31:34.6807735Z         "impl": {
2026-06-21T03:31:34.6807853Z           "complete": true,
2026-06-21T03:31:34.6807959Z           "evidence": [
2026-06-21T03:31:34.6808063Z             {
2026-06-21T03:31:34.6808212Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6808330Z               "line": 747
2026-06-21T03:31:34.6808435Z             },
2026-06-21T03:31:34.6808531Z             {
2026-06-21T03:31:34.6808663Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.6808782Z               "line": 113
2026-06-21T03:31:34.6808887Z             }
2026-06-21T03:31:34.6809066Z           ]
2026-06-21T03:31:34.6809175Z         },
2026-06-21T03:31:34.6809282Z         "int": {
2026-06-21T03:31:34.6809385Z           "complete": true,
2026-06-21T03:31:34.6812401Z           "evidence": [
2026-06-21T03:31:34.6812534Z             {
2026-06-21T03:31:34.6812682Z               "path": ".github/workflows/ci.yml",
2026-06-21T03:31:34.6812787Z               "line": 143
2026-06-21T03:31:34.6812891Z             },
2026-06-21T03:31:34.6813001Z             {
2026-06-21T03:31:34.6813154Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.6813268Z               "line": 1719
2026-06-21T03:31:34.6813364Z             }
2026-06-21T03:31:34.6813464Z           ]
2026-06-21T03:31:34.6813564Z         },
2026-06-21T03:31:34.6813670Z         "unit": {
2026-06-21T03:31:34.6813792Z           "complete": false,
2026-06-21T03:31:34.6813922Z           "evidence": []
2026-06-21T03:31:34.6814027Z         }
2026-06-21T03:31:34.6814126Z       }
2026-06-21T03:31:34.6814230Z     },
2026-06-21T03:31:34.6814330Z     {
2026-06-21T03:31:34.6814452Z       "id": "REQ-DOCS-6",
2026-06-21T03:31:34.6814838Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T03:31:34.6814963Z       "requiredStages": [
2026-06-21T03:31:34.6815078Z         "impl",
2026-06-21T03:31:34.6815181Z         "unit",
2026-06-21T03:31:34.6815287Z         "int"
2026-06-21T03:31:34.6815387Z       ],
2026-06-21T03:31:34.6815491Z       "stages": {
2026-06-21T03:31:34.6815597Z         "doc": {
2026-06-21T03:31:34.6815701Z           "complete": true,
2026-06-21T03:31:34.6815815Z           "evidence": [
2026-06-21T03:31:34.6815922Z             {
2026-06-21T03:31:34.6816088Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T03:31:34.6816198Z               "line": 4
2026-06-21T03:31:34.6816307Z             }
2026-06-21T03:31:34.6816408Z           ]
2026-06-21T03:31:34.6816508Z         },
2026-06-21T03:31:34.6816618Z         "impl": {
2026-06-21T03:31:34.6816732Z           "complete": true,
2026-06-21T03:31:34.6816842Z           "evidence": [
2026-06-21T03:31:34.6816947Z             {
2026-06-21T03:31:34.6817217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6817332Z               "line": 5240
2026-06-21T03:31:34.6817431Z             }
2026-06-21T03:31:34.6817537Z           ]
2026-06-21T03:31:34.6817637Z         },
2026-06-21T03:31:34.6817746Z         "int": {
2026-06-21T03:31:34.6817861Z           "complete": true,
2026-06-21T03:31:34.6817962Z           "evidence": [
2026-06-21T03:31:34.6818070Z             {
2026-06-21T03:31:34.6818223Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:31:34.6818337Z               "line": 39
2026-06-21T03:31:34.6818433Z             }
2026-06-21T03:31:34.6818534Z           ]
2026-06-21T03:31:34.6818733Z         },
2026-06-21T03:31:34.6818839Z         "unit": {
2026-06-21T03:31:34.6819029Z           "complete": true,
2026-06-21T03:31:34.6819135Z           "evidence": [
2026-06-21T03:31:34.6819238Z             {
2026-06-21T03:31:34.6819361Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6819490Z               "line": 10742
2026-06-21T03:31:34.6819602Z             }
2026-06-21T03:31:34.6819707Z           ]
2026-06-21T03:31:34.6819813Z         }
2026-06-21T03:31:34.6819912Z       }
2026-06-21T03:31:34.6820007Z     },
2026-06-21T03:31:34.6820099Z     {
2026-06-21T03:31:34.6820222Z       "id": "REQ-ELEVATE-1",
2026-06-21T03:31:34.6823586Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T03:31:34.6823738Z       "requiredStages": [
2026-06-21T03:31:34.6823847Z         "doc",
2026-06-21T03:31:34.6823957Z         "impl",
2026-06-21T03:31:34.6824062Z         "unit"
2026-06-21T03:31:34.6824172Z       ],
2026-06-21T03:31:34.6824272Z       "stages": {
2026-06-21T03:31:34.6824376Z         "doc": {
2026-06-21T03:31:34.6824487Z           "complete": true,
2026-06-21T03:31:34.6824601Z           "evidence": [
2026-06-21T03:31:34.6824705Z             {
2026-06-21T03:31:34.6824823Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6824938Z               "line": 687
2026-06-21T03:31:34.6825036Z             }
2026-06-21T03:31:34.6825141Z           ]
2026-06-21T03:31:34.6825252Z         },
2026-06-21T03:31:34.6825356Z         "impl": {
2026-06-21T03:31:34.6825470Z           "complete": true,
2026-06-21T03:31:34.6825581Z           "evidence": [
2026-06-21T03:31:34.6825684Z             {
2026-06-21T03:31:34.6825814Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6825928Z               "line": 3572
2026-06-21T03:31:34.6826037Z             },
2026-06-21T03:31:34.6826139Z             {
2026-06-21T03:31:34.6826271Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6826380Z               "line": 3617
2026-06-21T03:31:34.6826482Z             },
2026-06-21T03:31:34.6826581Z             {
2026-06-21T03:31:34.6826719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6826820Z               "line": 3679
2026-06-21T03:31:34.6826929Z             },
2026-06-21T03:31:34.6827034Z             {
2026-06-21T03:31:34.6827173Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.6827287Z               "line": 92
2026-06-21T03:31:34.6827493Z             },
2026-06-21T03:31:34.6827596Z             {
2026-06-21T03:31:34.6827724Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.6827830Z               "line": 148
2026-06-21T03:31:34.6827938Z             }
2026-06-21T03:31:34.6828039Z           ]
2026-06-21T03:31:34.6828135Z         },
2026-06-21T03:31:34.6828239Z         "int": {
2026-06-21T03:31:34.6828364Z           "complete": false,
2026-06-21T03:31:34.6828473Z           "evidence": []
2026-06-21T03:31:34.6828578Z         },
2026-06-21T03:31:34.6828673Z         "unit": {
2026-06-21T03:31:34.6828784Z           "complete": true,
2026-06-21T03:31:34.6829084Z           "evidence": [
2026-06-21T03:31:34.6829189Z             {
2026-06-21T03:31:34.6829323Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.6829441Z               "line": 442
2026-06-21T03:31:34.6829546Z             },
2026-06-21T03:31:34.6829647Z             {
2026-06-21T03:31:34.6829779Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.6829893Z               "line": 460
2026-06-21T03:31:34.6829993Z             }
2026-06-21T03:31:34.6830097Z           ]
2026-06-21T03:31:34.6830196Z         }
2026-06-21T03:31:34.6830301Z       }
2026-06-21T03:31:34.6830407Z     },
2026-06-21T03:31:34.6830505Z     {
2026-06-21T03:31:34.6830639Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T03:31:34.6832437Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T03:31:34.6832567Z       "requiredStages": [
2026-06-21T03:31:34.6832670Z         "doc",
2026-06-21T03:31:34.6832769Z         "impl",
2026-06-21T03:31:34.6832874Z         "unit"
2026-06-21T03:31:34.6832978Z       ],
2026-06-21T03:31:34.6833082Z       "stages": {
2026-06-21T03:31:34.6833192Z         "doc": {
2026-06-21T03:31:34.6833302Z           "complete": true,
2026-06-21T03:31:34.6833406Z           "evidence": [
2026-06-21T03:31:34.6833512Z             {
2026-06-21T03:31:34.6833631Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6833735Z               "line": 711
2026-06-21T03:31:34.6833836Z             }
2026-06-21T03:31:34.6833946Z           ]
2026-06-21T03:31:34.6834045Z         },
2026-06-21T03:31:34.6834151Z         "impl": {
2026-06-21T03:31:34.6834255Z           "complete": true,
2026-06-21T03:31:34.6834365Z           "evidence": [
2026-06-21T03:31:34.6834466Z             {
2026-06-21T03:31:34.6834593Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6834712Z               "line": 1721
2026-06-21T03:31:34.6834809Z             },
2026-06-21T03:31:34.6834912Z             {
2026-06-21T03:31:34.6835027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6835134Z               "line": 3125
2026-06-21T03:31:34.6835232Z             },
2026-06-21T03:31:34.6835340Z             {
2026-06-21T03:31:34.6835465Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6835572Z               "line": 3134
2026-06-21T03:31:34.6835677Z             }
2026-06-21T03:31:34.6835782Z           ]
2026-06-21T03:31:34.6835883Z         },
2026-06-21T03:31:34.6835986Z         "int": {
2026-06-21T03:31:34.6836117Z           "complete": false,
2026-06-21T03:31:34.6836221Z           "evidence": []
2026-06-21T03:31:34.6836325Z         },
2026-06-21T03:31:34.6836431Z         "unit": {
2026-06-21T03:31:34.6836541Z           "complete": true,
2026-06-21T03:31:34.6836650Z           "evidence": [
2026-06-21T03:31:34.6836755Z             {
2026-06-21T03:31:34.6837018Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6837136Z               "line": 7950
2026-06-21T03:31:34.6837237Z             },
2026-06-21T03:31:34.6837338Z             {
2026-06-21T03:31:34.6837461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6837566Z               "line": 7991
2026-06-21T03:31:34.6837672Z             }
2026-06-21T03:31:34.6837770Z           ]
2026-06-21T03:31:34.6837876Z         }
2026-06-21T03:31:34.6837972Z       }
2026-06-21T03:31:34.6838067Z     },
2026-06-21T03:31:34.6838165Z     {
2026-06-21T03:31:34.6838299Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T03:31:34.6843165Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T03:31:34.6843434Z       "requiredStages": [
2026-06-21T03:31:34.6843548Z         "doc",
2026-06-21T03:31:34.6843656Z         "impl",
2026-06-21T03:31:34.6843766Z         "unit",
2026-06-21T03:31:34.6843867Z         "int"
2026-06-21T03:31:34.6843976Z       ],
2026-06-21T03:31:34.6844082Z       "stages": {
2026-06-21T03:31:34.6844187Z         "doc": {
2026-06-21T03:31:34.6844300Z           "complete": true,
2026-06-21T03:31:34.6844406Z           "evidence": [
2026-06-21T03:31:34.6844525Z             {
2026-06-21T03:31:34.6844638Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6844754Z               "line": 163
2026-06-21T03:31:34.6844854Z             }
2026-06-21T03:31:34.6844939Z           ]
2026-06-21T03:31:34.6845045Z         },
2026-06-21T03:31:34.6845149Z         "impl": {
2026-06-21T03:31:34.6845268Z           "complete": true,
2026-06-21T03:31:34.6845374Z           "evidence": [
2026-06-21T03:31:34.6845477Z             {
2026-06-21T03:31:34.6845632Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.6845727Z               "line": 105
2026-06-21T03:31:34.6845835Z             },
2026-06-21T03:31:34.6845939Z             {
2026-06-21T03:31:34.6846067Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6846180Z               "line": 7219
2026-06-21T03:31:34.6846285Z             }
2026-06-21T03:31:34.6846391Z           ]
2026-06-21T03:31:34.6846490Z         },
2026-06-21T03:31:34.6846600Z         "int": {
2026-06-21T03:31:34.6846715Z           "complete": true,
2026-06-21T03:31:34.6846828Z           "evidence": [
2026-06-21T03:31:34.6846929Z             {
2026-06-21T03:31:34.6847063Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6847167Z               "line": 7384
2026-06-21T03:31:34.6847264Z             }
2026-06-21T03:31:34.6847372Z           ]
2026-06-21T03:31:34.6847573Z         },
2026-06-21T03:31:34.6847682Z         "unit": {
2026-06-21T03:31:34.6847792Z           "complete": true,
2026-06-21T03:31:34.6847908Z           "evidence": [
2026-06-21T03:31:34.6848016Z             {
2026-06-21T03:31:34.6848145Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6848260Z               "line": 7355
2026-06-21T03:31:34.6848354Z             }
2026-06-21T03:31:34.6848464Z           ]
2026-06-21T03:31:34.6848561Z         }
2026-06-21T03:31:34.6848669Z       }
2026-06-21T03:31:34.6848772Z     },
2026-06-21T03:31:34.6848869Z     {
2026-06-21T03:31:34.6849092Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T03:31:34.6850557Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T03:31:34.6850690Z       "requiredStages": [
2026-06-21T03:31:34.6850792Z         "impl",
2026-06-21T03:31:34.6850899Z         "unit"
2026-06-21T03:31:34.6851004Z       ],
2026-06-21T03:31:34.6851109Z       "stages": {
2026-06-21T03:31:34.6851208Z         "doc": {
2026-06-21T03:31:34.6851321Z           "complete": false,
2026-06-21T03:31:34.6851435Z           "evidence": []
2026-06-21T03:31:34.6851537Z         },
2026-06-21T03:31:34.6851640Z         "impl": {
2026-06-21T03:31:34.6851760Z           "complete": true,
2026-06-21T03:31:34.6851860Z           "evidence": [
2026-06-21T03:31:34.6851969Z             {
2026-06-21T03:31:34.6852099Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6852199Z               "line": 3165
2026-06-21T03:31:34.6852298Z             }
2026-06-21T03:31:34.6852399Z           ]
2026-06-21T03:31:34.6852508Z         },
2026-06-21T03:31:34.6852617Z         "int": {
2026-06-21T03:31:34.6852723Z           "complete": false,
2026-06-21T03:31:34.6852832Z           "evidence": []
2026-06-21T03:31:34.6852942Z         },
2026-06-21T03:31:34.6853043Z         "unit": {
2026-06-21T03:31:34.6853156Z           "complete": true,
2026-06-21T03:31:34.6853261Z           "evidence": [
2026-06-21T03:31:34.6853363Z             {
2026-06-21T03:31:34.6853494Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6853601Z               "line": 7331
2026-06-21T03:31:34.6853706Z             }
2026-06-21T03:31:34.6853809Z           ]
2026-06-21T03:31:34.6853909Z         }
2026-06-21T03:31:34.6854009Z       }
2026-06-21T03:31:34.6854112Z     },
2026-06-21T03:31:34.6854216Z     {
2026-06-21T03:31:34.6854331Z       "id": "REQ-EP-1",
2026-06-21T03:31:34.6854492Z       "title": "Day-one endpoint types; open type system",
2026-06-21T03:31:34.6854603Z       "requiredStages": [
2026-06-21T03:31:34.6854694Z         "impl",
2026-06-21T03:31:34.6854803Z         "unit"
2026-06-21T03:31:34.6854908Z       ],
2026-06-21T03:31:34.6855018Z       "stages": {
2026-06-21T03:31:34.6855113Z         "doc": {
2026-06-21T03:31:34.6855223Z           "complete": false,
2026-06-21T03:31:34.6855338Z           "evidence": []
2026-06-21T03:31:34.6855437Z         },
2026-06-21T03:31:34.6855542Z         "impl": {
2026-06-21T03:31:34.6855648Z           "complete": true,
2026-06-21T03:31:34.6855752Z           "evidence": [
2026-06-21T03:31:34.6855857Z             {
2026-06-21T03:31:34.6856000Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6856114Z               "line": 77
2026-06-21T03:31:34.6856211Z             },
2026-06-21T03:31:34.6856329Z             {
2026-06-21T03:31:34.6856470Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6856581Z               "line": 94
2026-06-21T03:31:34.6856674Z             }
2026-06-21T03:31:34.6856769Z           ]
2026-06-21T03:31:34.6856874Z         },
2026-06-21T03:31:34.6856975Z         "int": {
2026-06-21T03:31:34.6857194Z           "complete": false,
2026-06-21T03:31:34.6857304Z           "evidence": []
2026-06-21T03:31:34.6857408Z         },
2026-06-21T03:31:34.6857514Z         "unit": {
2026-06-21T03:31:34.6857628Z           "complete": true,
2026-06-21T03:31:34.6857732Z           "evidence": [
2026-06-21T03:31:34.6857838Z             {
2026-06-21T03:31:34.6857985Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6858094Z               "line": 161
2026-06-21T03:31:34.6858200Z             },
2026-06-21T03:31:34.6858290Z             {
2026-06-21T03:31:34.6858434Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6858633Z               "line": 178
2026-06-21T03:31:34.6858739Z             }
2026-06-21T03:31:34.6858839Z           ]
2026-06-21T03:31:34.6859034Z         }
2026-06-21T03:31:34.6859126Z       }
2026-06-21T03:31:34.6859224Z     },
2026-06-21T03:31:34.6859333Z     {
2026-06-21T03:31:34.6859458Z       "id": "REQ-EP-2",
2026-06-21T03:31:34.6859662Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T03:31:34.6859782Z       "requiredStages": [
2026-06-21T03:31:34.6859891Z         "impl",
2026-06-21T03:31:34.6859995Z         "unit"
2026-06-21T03:31:34.6860097Z       ],
2026-06-21T03:31:34.6860206Z       "stages": {
2026-06-21T03:31:34.6860310Z         "doc": {
2026-06-21T03:31:34.6860421Z           "complete": false,
2026-06-21T03:31:34.6860535Z           "evidence": []
2026-06-21T03:31:34.6860639Z         },
2026-06-21T03:31:34.6860745Z         "impl": {
2026-06-21T03:31:34.6860859Z           "complete": true,
2026-06-21T03:31:34.6860964Z           "evidence": [
2026-06-21T03:31:34.6861074Z             {
2026-06-21T03:31:34.6861221Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6861337Z               "line": 114
2026-06-21T03:31:34.6861441Z             },
2026-06-21T03:31:34.6861544Z             {
2026-06-21T03:31:34.6861693Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6861814Z               "line": 131
2026-06-21T03:31:34.6861919Z             },
2026-06-21T03:31:34.6862014Z             {
2026-06-21T03:31:34.6862158Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6862272Z               "line": 138
2026-06-21T03:31:34.6862378Z             }
2026-06-21T03:31:34.6862477Z           ]
2026-06-21T03:31:34.6862582Z         },
2026-06-21T03:31:34.6862692Z         "int": {
2026-06-21T03:31:34.6862806Z           "complete": false,
2026-06-21T03:31:34.6862911Z           "evidence": []
2026-06-21T03:31:34.6863011Z         },
2026-06-21T03:31:34.6863121Z         "unit": {
2026-06-21T03:31:34.6863240Z           "complete": true,
2026-06-21T03:31:34.6863354Z           "evidence": [
2026-06-21T03:31:34.6863459Z             {
2026-06-21T03:31:34.6863603Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6863717Z               "line": 190
2026-06-21T03:31:34.6863821Z             },
2026-06-21T03:31:34.6863923Z             {
2026-06-21T03:31:34.6864055Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6864166Z               "line": 208
2026-06-21T03:31:34.6864276Z             },
2026-06-21T03:31:34.6864379Z             {
2026-06-21T03:31:34.6864521Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:31:34.6864630Z               "line": 221
2026-06-21T03:31:34.6864738Z             }
2026-06-21T03:31:34.6864839Z           ]
2026-06-21T03:31:34.6864944Z         }
2026-06-21T03:31:34.6865053Z       }
2026-06-21T03:31:34.6865153Z     },
2026-06-21T03:31:34.6865254Z     {
2026-06-21T03:31:34.6865363Z       "id": "REQ-EP-3",
2026-06-21T03:31:34.6865583Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T03:31:34.6865701Z       "requiredStages": [
2026-06-21T03:31:34.6865807Z         "impl",
2026-06-21T03:31:34.6865921Z         "unit"
2026-06-21T03:31:34.6866021Z       ],
2026-06-21T03:31:34.6866132Z       "stages": {
2026-06-21T03:31:34.6866345Z         "doc": {
2026-06-21T03:31:34.6866461Z           "complete": false,
2026-06-21T03:31:34.6866565Z           "evidence": []
2026-06-21T03:31:34.6866674Z         },
2026-06-21T03:31:34.6866781Z         "impl": {
2026-06-21T03:31:34.6866894Z           "complete": true,
2026-06-21T03:31:34.6867003Z           "evidence": [
2026-06-21T03:31:34.6867107Z             {
2026-06-21T03:31:34.6867262Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6867371Z               "line": 31
2026-06-21T03:31:34.6867482Z             },
2026-06-21T03:31:34.6867582Z             {
2026-06-21T03:31:34.6867730Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6867934Z               "line": 49
2026-06-21T03:31:34.6868045Z             }
2026-06-21T03:31:34.6868145Z           ]
2026-06-21T03:31:34.6868249Z         },
2026-06-21T03:31:34.6868355Z         "int": {
2026-06-21T03:31:34.6868473Z           "complete": false,
2026-06-21T03:31:34.6868578Z           "evidence": []
2026-06-21T03:31:34.6868689Z         },
2026-06-21T03:31:34.6868788Z         "unit": {
2026-06-21T03:31:34.6868912Z           "complete": true,
2026-06-21T03:31:34.6869108Z           "evidence": [
2026-06-21T03:31:34.6869217Z             {
2026-06-21T03:31:34.6869357Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6869479Z               "line": 156
2026-06-21T03:31:34.6869585Z             },
2026-06-21T03:31:34.6869676Z             {
2026-06-21T03:31:34.6869831Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6869936Z               "line": 164
2026-06-21T03:31:34.6870037Z             },
2026-06-21T03:31:34.6870141Z             {
2026-06-21T03:31:34.6870275Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6870380Z               "line": 177
2026-06-21T03:31:34.6870489Z             },
2026-06-21T03:31:34.6870595Z             {
2026-06-21T03:31:34.6870728Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6870847Z               "line": 200
2026-06-21T03:31:34.6870953Z             },
2026-06-21T03:31:34.6871052Z             {
2026-06-21T03:31:34.6871199Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6871310Z               "line": 216
2026-06-21T03:31:34.6871415Z             },
2026-06-21T03:31:34.6871514Z             {
2026-06-21T03:31:34.6871658Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:31:34.6871772Z               "line": 233
2026-06-21T03:31:34.6871863Z             }
2026-06-21T03:31:34.6871968Z           ]
2026-06-21T03:31:34.6872072Z         }
2026-06-21T03:31:34.6872176Z       }
2026-06-21T03:31:34.6872281Z     },
2026-06-21T03:31:34.6872389Z     {
2026-06-21T03:31:34.6872508Z       "id": "REQ-EP-4",
2026-06-21T03:31:34.6872675Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T03:31:34.6872784Z       "requiredStages": [
2026-06-21T03:31:34.6872890Z         "impl",
2026-06-21T03:31:34.6873004Z         "unit"
2026-06-21T03:31:34.6873103Z       ],
2026-06-21T03:31:34.6873214Z       "stages": {
2026-06-21T03:31:34.6873319Z         "doc": {
2026-06-21T03:31:34.6873427Z           "complete": false,
2026-06-21T03:31:34.6873538Z           "evidence": []
2026-06-21T03:31:34.6873638Z         },
2026-06-21T03:31:34.6873747Z         "impl": {
2026-06-21T03:31:34.6873853Z           "complete": true,
2026-06-21T03:31:34.6873972Z           "evidence": [
2026-06-21T03:31:34.6874081Z             {
2026-06-21T03:31:34.6874220Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6874325Z               "line": 764
2026-06-21T03:31:34.6874430Z             },
2026-06-21T03:31:34.6874530Z             {
2026-06-21T03:31:34.6874668Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6874784Z               "line": 1127
2026-06-21T03:31:34.6874892Z             },
2026-06-21T03:31:34.6874991Z             {
2026-06-21T03:31:34.6875143Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6875370Z               "line": 2117
2026-06-21T03:31:34.6875476Z             },
2026-06-21T03:31:34.6875580Z             {
2026-06-21T03:31:34.6875728Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6875833Z               "line": 118
2026-06-21T03:31:34.6875938Z             },
2026-06-21T03:31:34.6876043Z             {
2026-06-21T03:31:34.6876181Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6876294Z               "line": 699
2026-06-21T03:31:34.6876401Z             },
2026-06-21T03:31:34.6876510Z             {
2026-06-21T03:31:34.6876653Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6876843Z               "line": 836
2026-06-21T03:31:34.6876948Z             },
2026-06-21T03:31:34.6877049Z             {
2026-06-21T03:31:34.6877201Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6877312Z               "line": 271
2026-06-21T03:31:34.6877417Z             },
2026-06-21T03:31:34.6877529Z             {
2026-06-21T03:31:34.6877672Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6877790Z               "line": 458
2026-06-21T03:31:34.6877889Z             },
2026-06-21T03:31:34.6877994Z             {
2026-06-21T03:31:34.6878128Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.6878232Z               "line": 1246
2026-06-21T03:31:34.6878338Z             }
2026-06-21T03:31:34.6878443Z           ]
2026-06-21T03:31:34.6878552Z         },
2026-06-21T03:31:34.6878653Z         "int": {
2026-06-21T03:31:34.6878777Z           "complete": false,
2026-06-21T03:31:34.6878890Z           "evidence": []
2026-06-21T03:31:34.6879086Z         },
2026-06-21T03:31:34.6879191Z         "unit": {
2026-06-21T03:31:34.6879307Z           "complete": true,
2026-06-21T03:31:34.6879439Z           "evidence": [
2026-06-21T03:31:34.6879544Z             {
2026-06-21T03:31:34.6879687Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.6879796Z               "line": 927
2026-06-21T03:31:34.6879902Z             },
2026-06-21T03:31:34.6880007Z             {
2026-06-21T03:31:34.6880159Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T03:31:34.6880270Z               "line": 76
2026-06-21T03:31:34.6880373Z             },
2026-06-21T03:31:34.6880477Z             {
2026-06-21T03:31:34.6880636Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T03:31:34.6880749Z               "line": 147
2026-06-21T03:31:34.6880854Z             }
2026-06-21T03:31:34.6880945Z           ]
2026-06-21T03:31:34.6881049Z         }
2026-06-21T03:31:34.6881140Z       }
2026-06-21T03:31:34.6881255Z     },
2026-06-21T03:31:34.6881354Z     {
2026-06-21T03:31:34.6881469Z       "id": "REQ-EP-5",
2026-06-21T03:31:34.6882176Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T03:31:34.6882289Z       "requiredStages": [
2026-06-21T03:31:34.6882399Z         "impl",
2026-06-21T03:31:34.6882491Z         "unit",
2026-06-21T03:31:34.6882599Z         "int"
2026-06-21T03:31:34.6882698Z       ],
2026-06-21T03:31:34.6882803Z       "stages": {
2026-06-21T03:31:34.6882911Z         "doc": {
2026-06-21T03:31:34.6883024Z           "complete": false,
2026-06-21T03:31:34.6883130Z           "evidence": []
2026-06-21T03:31:34.6883235Z         },
2026-06-21T03:31:34.6883344Z         "impl": {
2026-06-21T03:31:34.6883455Z           "complete": true,
2026-06-21T03:31:34.6883564Z           "evidence": [
2026-06-21T03:31:34.6883668Z             {
2026-06-21T03:31:34.6883831Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.6883945Z               "line": 367
2026-06-21T03:31:34.6884046Z             },
2026-06-21T03:31:34.6884155Z             {
2026-06-21T03:31:34.6884307Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6884523Z               "line": 18
2026-06-21T03:31:34.6884627Z             },
2026-06-21T03:31:34.6884733Z             {
2026-06-21T03:31:34.6884880Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6884995Z               "line": 63
2026-06-21T03:31:34.6885090Z             },
2026-06-21T03:31:34.6885199Z             {
2026-06-21T03:31:34.6885339Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6885447Z               "line": 92
2026-06-21T03:31:34.6885556Z             },
2026-06-21T03:31:34.6885661Z             {
2026-06-21T03:31:34.6885816Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6886016Z               "line": 167
2026-06-21T03:31:34.6886126Z             },
2026-06-21T03:31:34.6886230Z             {
2026-06-21T03:31:34.6886379Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6886493Z               "line": 179
2026-06-21T03:31:34.6886608Z             },
2026-06-21T03:31:34.6886713Z             {
2026-06-21T03:31:34.6886850Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.6886971Z               "line": 114
2026-06-21T03:31:34.6887075Z             },
2026-06-21T03:31:34.6887179Z             {
2026-06-21T03:31:34.6887323Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6887432Z               "line": 22
2026-06-21T03:31:34.6887538Z             },
2026-06-21T03:31:34.6887643Z             {
2026-06-21T03:31:34.6887790Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6887901Z               "line": 145
2026-06-21T03:31:34.6888010Z             },
2026-06-21T03:31:34.6888108Z             {
2026-06-21T03:31:34.6888251Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6888369Z               "line": 174
2026-06-21T03:31:34.6888463Z             },
2026-06-21T03:31:34.6888573Z             {
2026-06-21T03:31:34.6888717Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6888835Z               "line": 196
2026-06-21T03:31:34.6889022Z             },
2026-06-21T03:31:34.6889131Z             {
2026-06-21T03:31:34.6889279Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6889398Z               "line": 221
2026-06-21T03:31:34.6889495Z             },
2026-06-21T03:31:34.6889599Z             {
2026-06-21T03:31:34.6889751Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6889852Z               "line": 247
2026-06-21T03:31:34.6889951Z             },
2026-06-21T03:31:34.6890061Z             {
2026-06-21T03:31:34.6890205Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6890314Z               "line": 270
2026-06-21T03:31:34.6890414Z             },
2026-06-21T03:31:34.6890520Z             {
2026-06-21T03:31:34.6890662Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6890778Z               "line": 104
2026-06-21T03:31:34.6890886Z             },
2026-06-21T03:31:34.6890990Z             {
2026-06-21T03:31:34.6891119Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6891229Z               "line": 6068
2026-06-21T03:31:34.6891328Z             },
2026-06-21T03:31:34.6891433Z             {
2026-06-21T03:31:34.6891563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6891667Z               "line": 6202
2026-06-21T03:31:34.6891773Z             },
2026-06-21T03:31:34.6891883Z             {
2026-06-21T03:31:34.6891996Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6892111Z               "line": 6368
2026-06-21T03:31:34.6892216Z             },
2026-06-21T03:31:34.6892315Z             {
2026-06-21T03:31:34.6892445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6892554Z               "line": 6896
2026-06-21T03:31:34.6892664Z             }
2026-06-21T03:31:34.6892760Z           ]
2026-06-21T03:31:34.6892863Z         },
2026-06-21T03:31:34.6893080Z         "int": {
2026-06-21T03:31:34.6893192Z           "complete": true,
2026-06-21T03:31:34.6893306Z           "evidence": [
2026-06-21T03:31:34.6893397Z             {
2026-06-21T03:31:34.6893552Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:31:34.6893661Z               "line": 16
2026-06-21T03:31:34.6893772Z             },
2026-06-21T03:31:34.6893881Z             {
2026-06-21T03:31:34.6894020Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:31:34.6894129Z               "line": 15
2026-06-21T03:31:34.6894233Z             }
2026-06-21T03:31:34.6894340Z           ]
2026-06-21T03:31:34.6894439Z         },
2026-06-21T03:31:34.6894645Z         "unit": {
2026-06-21T03:31:34.6894764Z           "complete": true,
2026-06-21T03:31:34.6894877Z           "evidence": [
2026-06-21T03:31:34.6894983Z             {
2026-06-21T03:31:34.6895125Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6895231Z               "line": 246
2026-06-21T03:31:34.6895345Z             },
2026-06-21T03:31:34.6895450Z             {
2026-06-21T03:31:34.6895599Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6895706Z               "line": 306
2026-06-21T03:31:34.6895807Z             },
2026-06-21T03:31:34.6895909Z             {
2026-06-21T03:31:34.6896055Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:31:34.6896163Z               "line": 363
2026-06-21T03:31:34.6896269Z             },
2026-06-21T03:31:34.6896381Z             {
2026-06-21T03:31:34.6896524Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6896639Z               "line": 286
2026-06-21T03:31:34.6896748Z             },
2026-06-21T03:31:34.6896843Z             {
2026-06-21T03:31:34.6896987Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.6897096Z               "line": 338
2026-06-21T03:31:34.6897207Z             },
2026-06-21T03:31:34.6897311Z             {
2026-06-21T03:31:34.6897464Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.6897559Z               "line": 783
2026-06-21T03:31:34.6897668Z             },
2026-06-21T03:31:34.6897773Z             {
2026-06-21T03:31:34.6897907Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6898016Z               "line": 8751
2026-06-21T03:31:34.6898122Z             },
2026-06-21T03:31:34.6898222Z             {
2026-06-21T03:31:34.6898350Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6898471Z               "line": 8904
2026-06-21T03:31:34.6898565Z             },
2026-06-21T03:31:34.6898673Z             {
2026-06-21T03:31:34.6898802Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6898910Z               "line": 9493
2026-06-21T03:31:34.6899110Z             },
2026-06-21T03:31:34.6899206Z             {
2026-06-21T03:31:34.6901975Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6902118Z               "line": 9609
2026-06-21T03:31:34.6902217Z             }
2026-06-21T03:31:34.6902328Z           ]
2026-06-21T03:31:34.6902433Z         }
2026-06-21T03:31:34.6902536Z       }
2026-06-21T03:31:34.6902633Z     },
2026-06-21T03:31:34.6902737Z     {
2026-06-21T03:31:34.6902846Z       "id": "REQ-EP-6",
2026-06-21T03:31:34.6904356Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T03:31:34.6904474Z       "requiredStages": [
2026-06-21T03:31:34.6904580Z         "doc",
2026-06-21T03:31:34.6904689Z         "impl",
2026-06-21T03:31:34.6904794Z         "unit"
2026-06-21T03:31:34.6904895Z       ],
2026-06-21T03:31:34.6905152Z       "stages": {
2026-06-21T03:31:34.6905257Z         "doc": {
2026-06-21T03:31:34.6905375Z           "complete": true,
2026-06-21T03:31:34.6905486Z           "evidence": [
2026-06-21T03:31:34.6905590Z             {
2026-06-21T03:31:34.6905714Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6905825Z               "line": 227
2026-06-21T03:31:34.6905933Z             }
2026-06-21T03:31:34.6906033Z           ]
2026-06-21T03:31:34.6906135Z         },
2026-06-21T03:31:34.6906234Z         "impl": {
2026-06-21T03:31:34.6906348Z           "complete": true,
2026-06-21T03:31:34.6906450Z           "evidence": [
2026-06-21T03:31:34.6906558Z             {
2026-06-21T03:31:34.6906819Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6906931Z               "line": 212
2026-06-21T03:31:34.6907040Z             }
2026-06-21T03:31:34.6907132Z           ]
2026-06-21T03:31:34.6907228Z         },
2026-06-21T03:31:34.6907332Z         "int": {
2026-06-21T03:31:34.6907462Z           "complete": true,
2026-06-21T03:31:34.6907608Z           "evidence": [
2026-06-21T03:31:34.6907719Z             {
2026-06-21T03:31:34.6907871Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T03:31:34.6907980Z               "line": 18
2026-06-21T03:31:34.6908072Z             }
2026-06-21T03:31:34.6908181Z           ]
2026-06-21T03:31:34.6908266Z         },
2026-06-21T03:31:34.6908377Z         "unit": {
2026-06-21T03:31:34.6908476Z           "complete": true,
2026-06-21T03:31:34.6908591Z           "evidence": [
2026-06-21T03:31:34.6908697Z             {
2026-06-21T03:31:34.6908877Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.6909111Z               "line": 556
2026-06-21T03:31:34.6909215Z             },
2026-06-21T03:31:34.6909395Z             {
2026-06-21T03:31:34.6909546Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6909655Z               "line": 904
2026-06-21T03:31:34.6909761Z             }
2026-06-21T03:31:34.6909865Z           ]
2026-06-21T03:31:34.6909975Z         }
2026-06-21T03:31:34.6910066Z       }
2026-06-21T03:31:34.6910165Z     },
2026-06-21T03:31:34.6910266Z     {
2026-06-21T03:31:34.6910366Z       "id": "REQ-EP-7",
2026-06-21T03:31:34.6912077Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T03:31:34.6912249Z       "requiredStages": [
2026-06-21T03:31:34.6912354Z         "doc",
2026-06-21T03:31:34.6912472Z         "impl",
2026-06-21T03:31:34.6912578Z         "unit"
2026-06-21T03:31:34.6912678Z       ],
2026-06-21T03:31:34.6912791Z       "stages": {
2026-06-21T03:31:34.6912898Z         "doc": {
2026-06-21T03:31:34.6913007Z           "complete": true,
2026-06-21T03:31:34.6913111Z           "evidence": [
2026-06-21T03:31:34.6913212Z             {
2026-06-21T03:31:34.6913336Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.6913445Z               "line": 490
2026-06-21T03:31:34.6913546Z             }
2026-06-21T03:31:34.6913650Z           ]
2026-06-21T03:31:34.6913755Z         },
2026-06-21T03:31:34.6913861Z         "impl": {
2026-06-21T03:31:34.6913983Z           "complete": true,
2026-06-21T03:31:34.6914089Z           "evidence": [
2026-06-21T03:31:34.6914195Z             {
2026-06-21T03:31:34.6914355Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.6914460Z               "line": 505
2026-06-21T03:31:34.6914569Z             },
2026-06-21T03:31:34.6914672Z             {
2026-06-21T03:31:34.6914820Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.6914930Z               "line": 87
2026-06-21T03:31:34.6915150Z             },
2026-06-21T03:31:34.6915249Z             {
2026-06-21T03:31:34.6915397Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.6915507Z               "line": 81
2026-06-21T03:31:34.6915611Z             },
2026-06-21T03:31:34.6915727Z             {
2026-06-21T03:31:34.6915884Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.6915998Z               "line": 166
2026-06-21T03:31:34.6916113Z             },
2026-06-21T03:31:34.6916208Z             {
2026-06-21T03:31:34.6916341Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6916452Z               "line": 1645
2026-06-21T03:31:34.6916656Z             }
2026-06-21T03:31:34.6916762Z           ]
2026-06-21T03:31:34.6916865Z         },
2026-06-21T03:31:34.6916976Z         "int": {
2026-06-21T03:31:34.6917091Z           "complete": false,
2026-06-21T03:31:34.6917203Z           "evidence": []
2026-06-21T03:31:34.6917308Z         },
2026-06-21T03:31:34.6917422Z         "unit": {
2026-06-21T03:31:34.6917534Z           "complete": true,
2026-06-21T03:31:34.6917645Z           "evidence": [
2026-06-21T03:31:34.6917750Z             {
2026-06-21T03:31:34.6917887Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.6917993Z               "line": 623
2026-06-21T03:31:34.6918098Z             },
2026-06-21T03:31:34.6918206Z             {
2026-06-21T03:31:34.6918346Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.6918455Z               "line": 212
2026-06-21T03:31:34.6918559Z             },
2026-06-21T03:31:34.6918661Z             {
2026-06-21T03:31:34.6918798Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.6918918Z               "line": 307
2026-06-21T03:31:34.6919103Z             },
2026-06-21T03:31:34.6919208Z             {
2026-06-21T03:31:34.6919347Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6919470Z               "line": 7724
2026-06-21T03:31:34.6919596Z             },
2026-06-21T03:31:34.6919699Z             {
2026-06-21T03:31:34.6919826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6919927Z               "line": 7751
2026-06-21T03:31:34.6920035Z             }
2026-06-21T03:31:34.6920134Z           ]
2026-06-21T03:31:34.6920240Z         }
2026-06-21T03:31:34.6920340Z       }
2026-06-21T03:31:34.6920444Z     },
2026-06-21T03:31:34.6920540Z     {
2026-06-21T03:31:34.6920664Z       "id": "REQ-FRONT-1",
2026-06-21T03:31:34.6920875Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T03:31:34.6920993Z       "requiredStages": [],
2026-06-21T03:31:34.6921111Z       "stages": {
2026-06-21T03:31:34.6921213Z         "doc": {
2026-06-21T03:31:34.6921322Z           "complete": false,
2026-06-21T03:31:34.6921426Z           "evidence": []
2026-06-21T03:31:34.6921533Z         },
2026-06-21T03:31:34.6921642Z         "impl": {
2026-06-21T03:31:34.6921760Z           "complete": false,
2026-06-21T03:31:34.6921885Z           "evidence": []
2026-06-21T03:31:34.6921975Z         },
2026-06-21T03:31:34.6922085Z         "int": {
2026-06-21T03:31:34.6922186Z           "complete": false,
2026-06-21T03:31:34.6922304Z           "evidence": []
2026-06-21T03:31:34.6922405Z         },
2026-06-21T03:31:34.6922506Z         "unit": {
2026-06-21T03:31:34.6922623Z           "complete": false,
2026-06-21T03:31:34.6922722Z           "evidence": []
2026-06-21T03:31:34.6922823Z         }
2026-06-21T03:31:34.6922928Z       }
2026-06-21T03:31:34.6923027Z     },
2026-06-21T03:31:34.6923133Z     {
2026-06-21T03:31:34.6923252Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T03:31:34.6928710Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T03:31:34.6929124Z       "requiredStages": [
2026-06-21T03:31:34.6929259Z         "int"
2026-06-21T03:31:34.6929368Z       ],
2026-06-21T03:31:34.6929468Z       "stages": {
2026-06-21T03:31:34.6929578Z         "doc": {
2026-06-21T03:31:34.6929692Z           "complete": false,
2026-06-21T03:31:34.6929808Z           "evidence": []
2026-06-21T03:31:34.6929912Z         },
2026-06-21T03:31:34.6930021Z         "impl": {
2026-06-21T03:31:34.6930141Z           "complete": false,
2026-06-21T03:31:34.6930250Z           "evidence": []
2026-06-21T03:31:34.6930354Z         },
2026-06-21T03:31:34.6930449Z         "int": {
2026-06-21T03:31:34.6930558Z           "complete": true,
2026-06-21T03:31:34.6930680Z           "evidence": [
2026-06-21T03:31:34.6930785Z             {
2026-06-21T03:31:34.6930947Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T03:31:34.6931057Z               "line": 300
2026-06-21T03:31:34.6931162Z             }
2026-06-21T03:31:34.6931262Z           ]
2026-06-21T03:31:34.6931366Z         },
2026-06-21T03:31:34.6931468Z         "unit": {
2026-06-21T03:31:34.6931586Z           "complete": false,
2026-06-21T03:31:34.6931701Z           "evidence": []
2026-06-21T03:31:34.6931802Z         }
2026-06-21T03:31:34.6931911Z       }
2026-06-21T03:31:34.6932010Z     },
2026-06-21T03:31:34.6932117Z     {
2026-06-21T03:31:34.6932244Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T03:31:34.6934856Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T03:31:34.6934995Z       "requiredStages": [
2026-06-21T03:31:34.6935099Z         "impl",
2026-06-21T03:31:34.6935205Z         "unit",
2026-06-21T03:31:34.6935315Z         "int"
2026-06-21T03:31:34.6935414Z       ],
2026-06-21T03:31:34.6935523Z       "stages": {
2026-06-21T03:31:34.6935623Z         "doc": {
2026-06-21T03:31:34.6935844Z           "complete": false,
2026-06-21T03:31:34.6935965Z           "evidence": []
2026-06-21T03:31:34.6936069Z         },
2026-06-21T03:31:34.6936179Z         "impl": {
2026-06-21T03:31:34.6936289Z           "complete": true,
2026-06-21T03:31:34.6936403Z           "evidence": [
2026-06-21T03:31:34.6936493Z             {
2026-06-21T03:31:34.6936646Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6936760Z               "line": 257
2026-06-21T03:31:34.6936857Z             }
2026-06-21T03:31:34.6936966Z           ]
2026-06-21T03:31:34.6937065Z         },
2026-06-21T03:31:34.6937166Z         "int": {
2026-06-21T03:31:34.6937280Z           "complete": true,
2026-06-21T03:31:34.6937491Z           "evidence": [
2026-06-21T03:31:34.6937600Z             {
2026-06-21T03:31:34.6937752Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T03:31:34.6937872Z               "line": 93
2026-06-21T03:31:34.6937976Z             }
2026-06-21T03:31:34.6938082Z           ]
2026-06-21T03:31:34.6938192Z         },
2026-06-21T03:31:34.6938300Z         "unit": {
2026-06-21T03:31:34.6938418Z           "complete": true,
2026-06-21T03:31:34.6938519Z           "evidence": [
2026-06-21T03:31:34.6938627Z             {
2026-06-21T03:31:34.6938765Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6938874Z               "line": 802
2026-06-21T03:31:34.6939064Z             },
2026-06-21T03:31:34.6939180Z             {
2026-06-21T03:31:34.6939331Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6939433Z               "line": 824
2026-06-21T03:31:34.6939542Z             },
2026-06-21T03:31:34.6939641Z             {
2026-06-21T03:31:34.6939786Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.6939885Z               "line": 855
2026-06-21T03:31:34.6939985Z             }
2026-06-21T03:31:34.6940096Z           ]
2026-06-21T03:31:34.6940194Z         }
2026-06-21T03:31:34.6940300Z       }
2026-06-21T03:31:34.6940401Z     },
2026-06-21T03:31:34.6940509Z     {
2026-06-21T03:31:34.6940653Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T03:31:34.6943172Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T03:31:34.6943302Z       "requiredStages": [
2026-06-21T03:31:34.6943405Z         "doc",
2026-06-21T03:31:34.6943511Z         "impl",
2026-06-21T03:31:34.6943621Z         "unit",
2026-06-21T03:31:34.6943724Z         "int"
2026-06-21T03:31:34.6943823Z       ],
2026-06-21T03:31:34.6943939Z       "stages": {
2026-06-21T03:31:34.6944039Z         "doc": {
2026-06-21T03:31:34.6944157Z           "complete": true,
2026-06-21T03:31:34.6944263Z           "evidence": [
2026-06-21T03:31:34.6944372Z             {
2026-06-21T03:31:34.6944506Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.6944616Z               "line": 333
2026-06-21T03:31:34.6944725Z             }
2026-06-21T03:31:34.6944821Z           ]
2026-06-21T03:31:34.6944926Z         },
2026-06-21T03:31:34.6945021Z         "impl": {
2026-06-21T03:31:34.6945135Z           "complete": true,
2026-06-21T03:31:34.6945236Z           "evidence": [
2026-06-21T03:31:34.6945340Z             {
2026-06-21T03:31:34.6945504Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6945717Z               "line": 494
2026-06-21T03:31:34.6945823Z             },
2026-06-21T03:31:34.6945913Z             {
2026-06-21T03:31:34.6946073Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6946169Z               "line": 499
2026-06-21T03:31:34.6946277Z             },
2026-06-21T03:31:34.6946380Z             {
2026-06-21T03:31:34.6946520Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6946639Z               "line": 874
2026-06-21T03:31:34.6946739Z             },
2026-06-21T03:31:34.6946844Z             {
2026-06-21T03:31:34.6946982Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6947202Z               "line": 915
2026-06-21T03:31:34.6947306Z             },
2026-06-21T03:31:34.6947412Z             {
2026-06-21T03:31:34.6947554Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6947659Z               "line": 926
2026-06-21T03:31:34.6947770Z             },
2026-06-21T03:31:34.6947888Z             {
2026-06-21T03:31:34.6948031Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.6948136Z               "line": 358
2026-06-21T03:31:34.6948236Z             }
2026-06-21T03:31:34.6948342Z           ]
2026-06-21T03:31:34.6948437Z         },
2026-06-21T03:31:34.6948541Z         "int": {
2026-06-21T03:31:34.6948657Z           "complete": true,
2026-06-21T03:31:34.6948752Z           "evidence": [
2026-06-21T03:31:34.6948846Z             {
2026-06-21T03:31:34.6949093Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T03:31:34.6949196Z               "line": 30
2026-06-21T03:31:34.6949325Z             }
2026-06-21T03:31:34.6949439Z           ]
2026-06-21T03:31:34.6949539Z         },
2026-06-21T03:31:34.6949644Z         "unit": {
2026-06-21T03:31:34.6949759Z           "complete": true,
2026-06-21T03:31:34.6949863Z           "evidence": [
2026-06-21T03:31:34.6949969Z             {
2026-06-21T03:31:34.6950112Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6950240Z               "line": 1493
2026-06-21T03:31:34.6950346Z             },
2026-06-21T03:31:34.6950450Z             {
2026-06-21T03:31:34.6950593Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6950694Z               "line": 1518
2026-06-21T03:31:34.6950798Z             },
2026-06-21T03:31:34.6950898Z             {
2026-06-21T03:31:34.6951037Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6951142Z               "line": 1535
2026-06-21T03:31:34.6951243Z             },
2026-06-21T03:31:34.6951343Z             {
2026-06-21T03:31:34.6951488Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6951598Z               "line": 1578
2026-06-21T03:31:34.6951702Z             }
2026-06-21T03:31:34.6951800Z           ]
2026-06-21T03:31:34.6951906Z         }
2026-06-21T03:31:34.6952002Z       }
2026-06-21T03:31:34.6952110Z     },
2026-06-21T03:31:34.6952211Z     {
2026-06-21T03:31:34.6952378Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T03:31:34.6954994Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T03:31:34.6955234Z       "requiredStages": [],
2026-06-21T03:31:34.6955342Z       "stages": {
2026-06-21T03:31:34.6955453Z         "doc": {
2026-06-21T03:31:34.6955562Z           "complete": false,
2026-06-21T03:31:34.6955676Z           "evidence": []
2026-06-21T03:31:34.6955783Z         },
2026-06-21T03:31:34.6955896Z         "impl": {
2026-06-21T03:31:34.6956010Z           "complete": false,
2026-06-21T03:31:34.6956121Z           "evidence": []
2026-06-21T03:31:34.6956229Z         },
2026-06-21T03:31:34.6956329Z         "int": {
2026-06-21T03:31:34.6956450Z           "complete": false,
2026-06-21T03:31:34.6956548Z           "evidence": []
2026-06-21T03:31:34.6956748Z         },
2026-06-21T03:31:34.6956855Z         "unit": {
2026-06-21T03:31:34.6956974Z           "complete": false,
2026-06-21T03:31:34.6957090Z           "evidence": []
2026-06-21T03:31:34.6957189Z         }
2026-06-21T03:31:34.6957294Z       }
2026-06-21T03:31:34.6957390Z     },
2026-06-21T03:31:34.6957504Z     {
2026-06-21T03:31:34.6957657Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T03:31:34.6961459Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T03:31:34.6961625Z       "requiredStages": [
2026-06-21T03:31:34.6961730Z         "impl",
2026-06-21T03:31:34.6961836Z         "unit",
2026-06-21T03:31:34.6961935Z         "int"
2026-06-21T03:31:34.6962029Z       ],
2026-06-21T03:31:34.6962129Z       "stages": {
2026-06-21T03:31:34.6962248Z         "doc": {
2026-06-21T03:31:34.6962351Z           "complete": false,
2026-06-21T03:31:34.6962461Z           "evidence": []
2026-06-21T03:31:34.6962562Z         },
2026-06-21T03:31:34.6962661Z         "impl": {
2026-06-21T03:31:34.6962766Z           "complete": true,
2026-06-21T03:31:34.6962881Z           "evidence": [
2026-06-21T03:31:34.6962990Z             {
2026-06-21T03:31:34.6963144Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6963253Z               "line": 570
2026-06-21T03:31:34.6963357Z             },
2026-06-21T03:31:34.6963458Z             {
2026-06-21T03:31:34.6963606Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6963710Z               "line": 594
2026-06-21T03:31:34.6963820Z             },
2026-06-21T03:31:34.6963921Z             {
2026-06-21T03:31:34.6964069Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6964178Z               "line": 620
2026-06-21T03:31:34.6964282Z             },
2026-06-21T03:31:34.6964393Z             {
2026-06-21T03:31:34.6964539Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6964641Z               "line": 679
2026-06-21T03:31:34.6964746Z             },
2026-06-21T03:31:34.6964854Z             {
2026-06-21T03:31:34.6964987Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.6965211Z               "line": 89
2026-06-21T03:31:34.6965316Z             },
2026-06-21T03:31:34.6965412Z             {
2026-06-21T03:31:34.6965554Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.6965660Z               "line": 134
2026-06-21T03:31:34.6965769Z             }
2026-06-21T03:31:34.6965873Z           ]
2026-06-21T03:31:34.6965980Z         },
2026-06-21T03:31:34.6966089Z         "int": {
2026-06-21T03:31:34.6966202Z           "complete": true,
2026-06-21T03:31:34.6966318Z           "evidence": [
2026-06-21T03:31:34.6966413Z             {
2026-06-21T03:31:34.6966585Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T03:31:34.6966789Z               "line": 20
2026-06-21T03:31:34.6966890Z             }
2026-06-21T03:31:34.6967001Z           ]
2026-06-21T03:31:34.6967099Z         },
2026-06-21T03:31:34.6967207Z         "unit": {
2026-06-21T03:31:34.6967323Z           "complete": true,
2026-06-21T03:31:34.6967439Z           "evidence": [
2026-06-21T03:31:34.6967539Z             {
2026-06-21T03:31:34.6967684Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.6967792Z               "line": 1047
2026-06-21T03:31:34.6967893Z             },
2026-06-21T03:31:34.6967998Z             {
2026-06-21T03:31:34.6968140Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.6968246Z               "line": 445
2026-06-21T03:31:34.6968351Z             }
2026-06-21T03:31:34.6968455Z           ]
2026-06-21T03:31:34.6968561Z         }
2026-06-21T03:31:34.6968665Z       }
2026-06-21T03:31:34.6968760Z     },
2026-06-21T03:31:34.6968861Z     {
2026-06-21T03:31:34.6969094Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T03:31:34.6971772Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T03:31:34.6971913Z       "requiredStages": [
2026-06-21T03:31:34.6972019Z         "doc",
2026-06-21T03:31:34.6972138Z         "impl",
2026-06-21T03:31:34.6972237Z         "unit",
2026-06-21T03:31:34.6972344Z         "int"
2026-06-21T03:31:34.6972448Z       ],
2026-06-21T03:31:34.6972557Z       "stages": {
2026-06-21T03:31:34.6972656Z         "doc": {
2026-06-21T03:31:34.6972766Z           "complete": true,
2026-06-21T03:31:34.6972878Z           "evidence": [
2026-06-21T03:31:34.6972983Z             {
2026-06-21T03:31:34.6973113Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.6973217Z               "line": 302
2026-06-21T03:31:34.6973312Z             }
2026-06-21T03:31:34.6973418Z           ]
2026-06-21T03:31:34.6973512Z         },
2026-06-21T03:31:34.6973622Z         "impl": {
2026-06-21T03:31:34.6973727Z           "complete": true,
2026-06-21T03:31:34.6973837Z           "evidence": [
2026-06-21T03:31:34.6973942Z             {
2026-06-21T03:31:34.6974094Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.6974203Z               "line": 108
2026-06-21T03:31:34.6974319Z             },
2026-06-21T03:31:34.6974428Z             {
2026-06-21T03:31:34.6974571Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6974677Z               "line": 843
2026-06-21T03:31:34.6974780Z             },
2026-06-21T03:31:34.6974900Z             {
2026-06-21T03:31:34.6975052Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.6975264Z               "line": 1043
2026-06-21T03:31:34.6975372Z             },
2026-06-21T03:31:34.6975471Z             {
2026-06-21T03:31:34.6975624Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6975738Z               "line": 23
2026-06-21T03:31:34.6975848Z             },
2026-06-21T03:31:34.6975954Z             {
2026-06-21T03:31:34.6976095Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6976211Z               "line": 113
2026-06-21T03:31:34.6976315Z             },
2026-06-21T03:31:34.6976424Z             {
2026-06-21T03:31:34.6976667Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6976782Z               "line": 158
2026-06-21T03:31:34.6976893Z             },
2026-06-21T03:31:34.6976996Z             {
2026-06-21T03:31:34.6977140Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6977246Z               "line": 218
2026-06-21T03:31:34.6977359Z             },
2026-06-21T03:31:34.6977464Z             {
2026-06-21T03:31:34.6977617Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6977730Z               "line": 261
2026-06-21T03:31:34.6977830Z             },
2026-06-21T03:31:34.6977939Z             {
2026-06-21T03:31:34.6978076Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6978186Z               "line": 275
2026-06-21T03:31:34.6978286Z             },
2026-06-21T03:31:34.6978395Z             {
2026-06-21T03:31:34.6978544Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6978652Z               "line": 320
2026-06-21T03:31:34.6978826Z             },
2026-06-21T03:31:34.6978930Z             {
2026-06-21T03:31:34.6979173Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6979310Z               "line": 347
2026-06-21T03:31:34.6979416Z             },
2026-06-21T03:31:34.6979521Z             {
2026-06-21T03:31:34.6979673Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6979789Z               "line": 359
2026-06-21T03:31:34.6979887Z             },
2026-06-21T03:31:34.6979988Z             {
2026-06-21T03:31:34.6980127Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6980231Z               "line": 373
2026-06-21T03:31:34.6980342Z             },
2026-06-21T03:31:34.6980442Z             {
2026-06-21T03:31:34.6980593Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6980692Z               "line": 400
2026-06-21T03:31:34.6980797Z             },
2026-06-21T03:31:34.6980905Z             {
2026-06-21T03:31:34.6981053Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6981172Z               "line": 643
2026-06-21T03:31:34.6981271Z             },
2026-06-21T03:31:34.6981387Z             {
2026-06-21T03:31:34.6981529Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6981630Z               "line": 989
2026-06-21T03:31:34.6981725Z             },
2026-06-21T03:31:34.6981820Z             {
2026-06-21T03:31:34.6981993Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6982121Z               "line": 260
2026-06-21T03:31:34.6982226Z             },
2026-06-21T03:31:34.6982327Z             {
2026-06-21T03:31:34.6982473Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6982584Z               "line": 1143
2026-06-21T03:31:34.6982689Z             },
2026-06-21T03:31:34.6982798Z             {
2026-06-21T03:31:34.6982928Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6983051Z               "line": 1215
2026-06-21T03:31:34.6983154Z             },
2026-06-21T03:31:34.6983259Z             {
2026-06-21T03:31:34.6983405Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6983519Z               "line": 1227
2026-06-21T03:31:34.6983629Z             },
2026-06-21T03:31:34.6983853Z             {
2026-06-21T03:31:34.6983992Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.6984096Z               "line": 1842
2026-06-21T03:31:34.6984192Z             },
2026-06-21T03:31:34.6984297Z             {
2026-06-21T03:31:34.6984435Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6984550Z               "line": 188
2026-06-21T03:31:34.6984649Z             },
2026-06-21T03:31:34.6984754Z             {
2026-06-21T03:31:34.6984894Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6985002Z               "line": 265
2026-06-21T03:31:34.6985102Z             },
2026-06-21T03:31:34.6985298Z             {
2026-06-21T03:31:34.6985441Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6985552Z               "line": 276
2026-06-21T03:31:34.6985650Z             },
2026-06-21T03:31:34.6985761Z             {
2026-06-21T03:31:34.6985895Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.6986017Z               "line": 329
2026-06-21T03:31:34.6986117Z             },
2026-06-21T03:31:34.6986227Z             {
2026-06-21T03:31:34.6986369Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.6986485Z               "line": 56
2026-06-21T03:31:34.6986590Z             },
2026-06-21T03:31:34.6986693Z             {
2026-06-21T03:31:34.6986833Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.6986947Z               "line": 188
2026-06-21T03:31:34.6987057Z             },
2026-06-21T03:31:34.6987157Z             {
2026-06-21T03:31:34.6987304Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:31:34.6987429Z               "line": 82
2026-06-21T03:31:34.6987519Z             },
2026-06-21T03:31:34.6987619Z             {
2026-06-21T03:31:34.6987758Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.6987872Z               "line": 308
2026-06-21T03:31:34.6987976Z             },
2026-06-21T03:31:34.6988107Z             {
2026-06-21T03:31:34.6988266Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.6988381Z               "line": 424
2026-06-21T03:31:34.6988485Z             },
2026-06-21T03:31:34.6988588Z             {
2026-06-21T03:31:34.6988717Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.6988823Z               "line": 2006
2026-06-21T03:31:34.6988926Z             }
2026-06-21T03:31:34.6989118Z           ]
2026-06-21T03:31:34.6989213Z         },
2026-06-21T03:31:34.6989338Z         "int": {
2026-06-21T03:31:34.6989456Z           "complete": true,
2026-06-21T03:31:34.6989565Z           "evidence": [
2026-06-21T03:31:34.6989671Z             {
2026-06-21T03:31:34.6989814Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:31:34.6989933Z               "line": 57
2026-06-21T03:31:34.6990039Z             },
2026-06-21T03:31:34.6990143Z             {
2026-06-21T03:31:34.6990282Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T03:31:34.6990387Z               "line": 41
2026-06-21T03:31:34.6990486Z             }
2026-06-21T03:31:34.6990592Z           ]
2026-06-21T03:31:34.6990697Z         },
2026-06-21T03:31:34.6990791Z         "unit": {
2026-06-21T03:31:34.6990916Z           "complete": true,
2026-06-21T03:31:34.6991026Z           "evidence": [
2026-06-21T03:31:34.6991134Z             {
2026-06-21T03:31:34.6991272Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.6991385Z               "line": 532
2026-06-21T03:31:34.6991498Z             },
2026-06-21T03:31:34.6991599Z             {
2026-06-21T03:31:34.6991746Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.6991865Z               "line": 757
2026-06-21T03:31:34.6991976Z             },
2026-06-21T03:31:34.6992070Z             {
2026-06-21T03:31:34.6992209Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6992319Z               "line": 1067
2026-06-21T03:31:34.6992428Z             },
2026-06-21T03:31:34.6992629Z             {
2026-06-21T03:31:34.6992762Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6992873Z               "line": 1101
2026-06-21T03:31:34.6992976Z             },
2026-06-21T03:31:34.6993076Z             {
2026-06-21T03:31:34.6993221Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6993324Z               "line": 1143
2026-06-21T03:31:34.6993420Z             },
2026-06-21T03:31:34.6993522Z             {
2026-06-21T03:31:34.6993672Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6993810Z               "line": 1215
2026-06-21T03:31:34.6994013Z             },
2026-06-21T03:31:34.6994118Z             {
2026-06-21T03:31:34.6994261Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6994379Z               "line": 1228
2026-06-21T03:31:34.6994481Z             },
2026-06-21T03:31:34.6994576Z             {
2026-06-21T03:31:34.6994713Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6994833Z               "line": 1251
2026-06-21T03:31:34.6994938Z             },
2026-06-21T03:31:34.6995028Z             {
2026-06-21T03:31:34.6995176Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6995281Z               "line": 1277
2026-06-21T03:31:34.6995386Z             },
2026-06-21T03:31:34.6995491Z             {
2026-06-21T03:31:34.6995624Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6995730Z               "line": 1291
2026-06-21T03:31:34.6995834Z             },
2026-06-21T03:31:34.6995939Z             {
2026-06-21T03:31:34.6996084Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6996210Z               "line": 1315
2026-06-21T03:31:34.6996321Z             },
2026-06-21T03:31:34.6996422Z             {
2026-06-21T03:31:34.6996568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6996677Z               "line": 1447
2026-06-21T03:31:34.6996788Z             },
2026-06-21T03:31:34.6996887Z             {
2026-06-21T03:31:34.6997021Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6997131Z               "line": 1623
2026-06-21T03:31:34.6997230Z             },
2026-06-21T03:31:34.6997341Z             {
2026-06-21T03:31:34.6997484Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6997607Z               "line": 1678
2026-06-21T03:31:34.6997712Z             },
2026-06-21T03:31:34.6997836Z             {
2026-06-21T03:31:34.6997990Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6998098Z               "line": 1724
2026-06-21T03:31:34.6998212Z             },
2026-06-21T03:31:34.6998309Z             {
2026-06-21T03:31:34.6998455Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6998566Z               "line": 1769
2026-06-21T03:31:34.6998671Z             },
2026-06-21T03:31:34.6998780Z             {
2026-06-21T03:31:34.6998917Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6999106Z               "line": 1813
2026-06-21T03:31:34.6999201Z             },
2026-06-21T03:31:34.6999321Z             {
2026-06-21T03:31:34.6999482Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.6999606Z               "line": 1855
2026-06-21T03:31:34.6999716Z             },
2026-06-21T03:31:34.6999806Z             {
2026-06-21T03:31:34.6999946Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7003651Z               "line": 2176
2026-06-21T03:31:34.7003791Z             },
2026-06-21T03:31:34.7003894Z             {
2026-06-21T03:31:34.7004077Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7004199Z               "line": 217
2026-06-21T03:31:34.7004303Z             },
2026-06-21T03:31:34.7004403Z             {
2026-06-21T03:31:34.7004558Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7004813Z               "line": 233
2026-06-21T03:31:34.7004921Z             },
2026-06-21T03:31:34.7005026Z             {
2026-06-21T03:31:34.7005178Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7005287Z               "line": 254
2026-06-21T03:31:34.7005389Z             },
2026-06-21T03:31:34.7005493Z             {
2026-06-21T03:31:34.7005646Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7005755Z               "line": 265
2026-06-21T03:31:34.7005846Z             },
2026-06-21T03:31:34.7005946Z             {
2026-06-21T03:31:34.7006098Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7006305Z               "line": 278
2026-06-21T03:31:34.7006404Z             },
2026-06-21T03:31:34.7006513Z             {
2026-06-21T03:31:34.7006658Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7006770Z               "line": 289
2026-06-21T03:31:34.7006876Z             },
2026-06-21T03:31:34.7006982Z             {
2026-06-21T03:31:34.7007128Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7007237Z               "line": 301
2026-06-21T03:31:34.7007343Z             },
2026-06-21T03:31:34.7007447Z             {
2026-06-21T03:31:34.7007586Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7007696Z               "line": 312
2026-06-21T03:31:34.7007790Z             },
2026-06-21T03:31:34.7007891Z             {
2026-06-21T03:31:34.7008029Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7008143Z               "line": 323
2026-06-21T03:31:34.7008245Z             },
2026-06-21T03:31:34.7008353Z             {
2026-06-21T03:31:34.7008501Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7008606Z               "line": 332
2026-06-21T03:31:34.7008716Z             },
2026-06-21T03:31:34.7008821Z             {
2026-06-21T03:31:34.7009044Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7009169Z               "line": 342
2026-06-21T03:31:34.7009269Z             },
2026-06-21T03:31:34.7009391Z             {
2026-06-21T03:31:34.7009544Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:31:34.7009652Z               "line": 358
2026-06-21T03:31:34.7009756Z             },
2026-06-21T03:31:34.7009857Z             {
2026-06-21T03:31:34.7010009Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7010118Z               "line": 758
2026-06-21T03:31:34.7010220Z             },
2026-06-21T03:31:34.7010324Z             {
2026-06-21T03:31:34.7010473Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7010591Z               "line": 794
2026-06-21T03:31:34.7010690Z             },
2026-06-21T03:31:34.7010797Z             {
2026-06-21T03:31:34.7010934Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.7011049Z               "line": 966
2026-06-21T03:31:34.7011149Z             },
2026-06-21T03:31:34.7011263Z             {
2026-06-21T03:31:34.7011412Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:31:34.7011521Z               "line": 145
2026-06-21T03:31:34.7011630Z             },
2026-06-21T03:31:34.7011732Z             {
2026-06-21T03:31:34.7011883Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:31:34.7011988Z               "line": 224
2026-06-21T03:31:34.7012089Z             },
2026-06-21T03:31:34.7012193Z             {
2026-06-21T03:31:34.7012335Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:31:34.7012449Z               "line": 293
2026-06-21T03:31:34.7012548Z             },
2026-06-21T03:31:34.7012661Z             {
2026-06-21T03:31:34.7012800Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T03:31:34.7012904Z               "line": 17
2026-06-21T03:31:34.7013010Z             },
2026-06-21T03:31:34.7013115Z             {
2026-06-21T03:31:34.7013252Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T03:31:34.7013453Z               "line": 104
2026-06-21T03:31:34.7013562Z             }
2026-06-21T03:31:34.7013659Z           ]
2026-06-21T03:31:34.7013763Z         }
2026-06-21T03:31:34.7013868Z       }
2026-06-21T03:31:34.7013969Z     },
2026-06-21T03:31:34.7014069Z     {
2026-06-21T03:31:34.7014206Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T03:31:34.7017326Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T03:31:34.7017589Z       "requiredStages": [
2026-06-21T03:31:34.7017697Z         "doc",
2026-06-21T03:31:34.7017802Z         "impl",
2026-06-21T03:31:34.7017903Z         "unit",
2026-06-21T03:31:34.7018007Z         "int"
2026-06-21T03:31:34.7018117Z       ],
2026-06-21T03:31:34.7018213Z       "stages": {
2026-06-21T03:31:34.7018321Z         "doc": {
2026-06-21T03:31:34.7018432Z           "complete": true,
2026-06-21T03:31:34.7018541Z           "evidence": [
2026-06-21T03:31:34.7018636Z             {
2026-06-21T03:31:34.7018775Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7018899Z               "line": 388
2026-06-21T03:31:34.7019061Z             }
2026-06-21T03:31:34.7019162Z           ]
2026-06-21T03:31:34.7019285Z         },
2026-06-21T03:31:34.7019391Z         "impl": {
2026-06-21T03:31:34.7019519Z           "complete": true,
2026-06-21T03:31:34.7019628Z           "evidence": [
2026-06-21T03:31:34.7019734Z             {
2026-06-21T03:31:34.7019881Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.7019985Z               "line": 773
2026-06-21T03:31:34.7020095Z             },
2026-06-21T03:31:34.7020184Z             {
2026-06-21T03:31:34.7020335Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.7020441Z               "line": 796
2026-06-21T03:31:34.7020550Z             }
2026-06-21T03:31:34.7020650Z           ]
2026-06-21T03:31:34.7020751Z         },
2026-06-21T03:31:34.7020860Z         "int": {
2026-06-21T03:31:34.7020964Z           "complete": true,
2026-06-21T03:31:34.7021075Z           "evidence": [
2026-06-21T03:31:34.7021179Z             {
2026-06-21T03:31:34.7021333Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.7021442Z               "line": 228
2026-06-21T03:31:34.7021537Z             },
2026-06-21T03:31:34.7021647Z             {
2026-06-21T03:31:34.7021785Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:31:34.7021899Z               "line": 468
2026-06-21T03:31:34.7022001Z             }
2026-06-21T03:31:34.7022105Z           ]
2026-06-21T03:31:34.7022205Z         },
2026-06-21T03:31:34.7022316Z         "unit": {
2026-06-21T03:31:34.7022424Z           "complete": true,
2026-06-21T03:31:34.7022529Z           "evidence": [
2026-06-21T03:31:34.7022640Z             {
2026-06-21T03:31:34.7022781Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.7022895Z               "line": 1495
2026-06-21T03:31:34.7022995Z             }
2026-06-21T03:31:34.7023098Z           ]
2026-06-21T03:31:34.7023202Z         }
2026-06-21T03:31:34.7023417Z       }
2026-06-21T03:31:34.7023522Z     },
2026-06-21T03:31:34.7023623Z     {
2026-06-21T03:31:34.7023770Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T03:31:34.7027411Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T03:31:34.7027667Z       "requiredStages": [
2026-06-21T03:31:34.7027778Z         "doc",
2026-06-21T03:31:34.7027886Z         "impl",
2026-06-21T03:31:34.7027982Z         "unit"
2026-06-21T03:31:34.7028083Z       ],
2026-06-21T03:31:34.7028196Z       "stages": {
2026-06-21T03:31:34.7028305Z         "doc": {
2026-06-21T03:31:34.7028410Z           "complete": true,
2026-06-21T03:31:34.7028520Z           "evidence": [
2026-06-21T03:31:34.7028620Z             {
2026-06-21T03:31:34.7028750Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7028868Z               "line": 395
2026-06-21T03:31:34.7029055Z             }
2026-06-21T03:31:34.7029155Z           ]
2026-06-21T03:31:34.7029254Z         },
2026-06-21T03:31:34.7029360Z         "impl": {
2026-06-21T03:31:34.7029502Z           "complete": true,
2026-06-21T03:31:34.7029611Z           "evidence": [
2026-06-21T03:31:34.7029713Z             {
2026-06-21T03:31:34.7029854Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7029961Z               "line": 75
2026-06-21T03:31:34.7030070Z             }
2026-06-21T03:31:34.7030169Z           ]
2026-06-21T03:31:34.7030280Z         },
2026-06-21T03:31:34.7030380Z         "int": {
2026-06-21T03:31:34.7030503Z           "complete": false,
2026-06-21T03:31:34.7030616Z           "evidence": []
2026-06-21T03:31:34.7030716Z         },
2026-06-21T03:31:34.7030810Z         "unit": {
2026-06-21T03:31:34.7030920Z           "complete": true,
2026-06-21T03:31:34.7031035Z           "evidence": [
2026-06-21T03:31:34.7031134Z             {
2026-06-21T03:31:34.7031282Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7031387Z               "line": 632
2026-06-21T03:31:34.7031496Z             }
2026-06-21T03:31:34.7031598Z           ]
2026-06-21T03:31:34.7031697Z         }
2026-06-21T03:31:34.7031801Z       }
2026-06-21T03:31:34.7031903Z     },
2026-06-21T03:31:34.7032002Z     {
2026-06-21T03:31:34.7032135Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T03:31:34.7032340Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T03:31:34.7032455Z       "requiredStages": [
2026-06-21T03:31:34.7032561Z         "impl",
2026-06-21T03:31:34.7032665Z         "unit"
2026-06-21T03:31:34.7032774Z       ],
2026-06-21T03:31:34.7032881Z       "stages": {
2026-06-21T03:31:34.7032984Z         "doc": {
2026-06-21T03:31:34.7033099Z           "complete": false,
2026-06-21T03:31:34.7033205Z           "evidence": []
2026-06-21T03:31:34.7033308Z         },
2026-06-21T03:31:34.7033412Z         "impl": {
2026-06-21T03:31:34.7033630Z           "complete": true,
2026-06-21T03:31:34.7033743Z           "evidence": [
2026-06-21T03:31:34.7033835Z             {
2026-06-21T03:31:34.7033982Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.7034096Z               "line": 172
2026-06-21T03:31:34.7034193Z             },
2026-06-21T03:31:34.7034297Z             {
2026-06-21T03:31:34.7034431Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7034540Z               "line": 18
2026-06-21T03:31:34.7034645Z             },
2026-06-21T03:31:34.7034731Z             {
2026-06-21T03:31:34.7034869Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7035065Z               "line": 100
2026-06-21T03:31:34.7035165Z             }
2026-06-21T03:31:34.7035255Z           ]
2026-06-21T03:31:34.7035350Z         },
2026-06-21T03:31:34.7035452Z         "int": {
2026-06-21T03:31:34.7035570Z           "complete": false,
2026-06-21T03:31:34.7035675Z           "evidence": []
2026-06-21T03:31:34.7035781Z         },
2026-06-21T03:31:34.7035889Z         "unit": {
2026-06-21T03:31:34.7035993Z           "complete": true,
2026-06-21T03:31:34.7036103Z           "evidence": [
2026-06-21T03:31:34.7036197Z             {
2026-06-21T03:31:34.7036343Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.7036459Z               "line": 857
2026-06-21T03:31:34.7036559Z             },
2026-06-21T03:31:34.7036663Z             {
2026-06-21T03:31:34.7036793Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7036911Z               "line": 161
2026-06-21T03:31:34.7037012Z             },
2026-06-21T03:31:34.7037117Z             {
2026-06-21T03:31:34.7037263Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7037370Z               "line": 233
2026-06-21T03:31:34.7037478Z             }
2026-06-21T03:31:34.7037574Z           ]
2026-06-21T03:31:34.7037680Z         }
2026-06-21T03:31:34.7037775Z       }
2026-06-21T03:31:34.7037879Z     },
2026-06-21T03:31:34.7037990Z     {
2026-06-21T03:31:34.7038122Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T03:31:34.7038586Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T03:31:34.7038696Z       "requiredStages": [
2026-06-21T03:31:34.7038803Z         "impl",
2026-06-21T03:31:34.7038908Z         "unit"
2026-06-21T03:31:34.7039095Z       ],
2026-06-21T03:31:34.7039204Z       "stages": {
2026-06-21T03:31:34.7039315Z         "doc": {
2026-06-21T03:31:34.7039428Z           "complete": true,
2026-06-21T03:31:34.7039532Z           "evidence": [
2026-06-21T03:31:34.7039639Z             {
2026-06-21T03:31:34.7039762Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7039867Z               "line": 220
2026-06-21T03:31:34.7039972Z             }
2026-06-21T03:31:34.7040072Z           ]
2026-06-21T03:31:34.7040172Z         },
2026-06-21T03:31:34.7040273Z         "impl": {
2026-06-21T03:31:34.7040396Z           "complete": true,
2026-06-21T03:31:34.7040501Z           "evidence": [
2026-06-21T03:31:34.7040607Z             {
2026-06-21T03:31:34.7040763Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.7040869Z               "line": 316
2026-06-21T03:31:34.7040973Z             },
2026-06-21T03:31:34.7041077Z             {
2026-06-21T03:31:34.7041225Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7041327Z               "line": 356
2026-06-21T03:31:34.7041431Z             },
2026-06-21T03:31:34.7041528Z             {
2026-06-21T03:31:34.7041670Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7041790Z               "line": 578
2026-06-21T03:31:34.7041890Z             },
2026-06-21T03:31:34.7041994Z             {
2026-06-21T03:31:34.7042129Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7042233Z               "line": 77
2026-06-21T03:31:34.7042439Z             }
2026-06-21T03:31:34.7042538Z           ]
2026-06-21T03:31:34.7042643Z         },
2026-06-21T03:31:34.7042748Z         "int": {
2026-06-21T03:31:34.7042863Z           "complete": false,
2026-06-21T03:31:34.7042967Z           "evidence": []
2026-06-21T03:31:34.7043063Z         },
2026-06-21T03:31:34.7043159Z         "unit": {
2026-06-21T03:31:34.7043268Z           "complete": true,
2026-06-21T03:31:34.7043373Z           "evidence": [
2026-06-21T03:31:34.7043465Z             {
2026-06-21T03:31:34.7043611Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7043722Z               "line": 747
2026-06-21T03:31:34.7043821Z             },
2026-06-21T03:31:34.7044015Z             {
2026-06-21T03:31:34.7044162Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7044266Z               "line": 785
2026-06-21T03:31:34.7044366Z             },
2026-06-21T03:31:34.7044467Z             {
2026-06-21T03:31:34.7044613Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7044729Z               "line": 166
2026-06-21T03:31:34.7044834Z             }
2026-06-21T03:31:34.7044928Z           ]
2026-06-21T03:31:34.7045035Z         }
2026-06-21T03:31:34.7045134Z       }
2026-06-21T03:31:34.7045238Z     },
2026-06-21T03:31:34.7045344Z     {
2026-06-21T03:31:34.7045496Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T03:31:34.7046092Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T03:31:34.7046207Z       "requiredStages": [
2026-06-21T03:31:34.7046323Z         "impl",
2026-06-21T03:31:34.7046426Z         "unit"
2026-06-21T03:31:34.7046525Z       ],
2026-06-21T03:31:34.7046635Z       "stages": {
2026-06-21T03:31:34.7046733Z         "doc": {
2026-06-21T03:31:34.7046846Z           "complete": false,
2026-06-21T03:31:34.7046952Z           "evidence": []
2026-06-21T03:31:34.7047067Z         },
2026-06-21T03:31:34.7047170Z         "impl": {
2026-06-21T03:31:34.7047291Z           "complete": true,
2026-06-21T03:31:34.7047396Z           "evidence": [
2026-06-21T03:31:34.7047499Z             {
2026-06-21T03:31:34.7047653Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:31:34.7047762Z               "line": 22
2026-06-21T03:31:34.7047858Z             },
2026-06-21T03:31:34.7047958Z             {
2026-06-21T03:31:34.7048101Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7048206Z               "line": 487
2026-06-21T03:31:34.7048306Z             },
2026-06-21T03:31:34.7048402Z             {
2026-06-21T03:31:34.7048555Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:31:34.7048659Z               "line": 17
2026-06-21T03:31:34.7048764Z             },
2026-06-21T03:31:34.7048879Z             {
2026-06-21T03:31:34.7049107Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:31:34.7049213Z               "line": 147
2026-06-21T03:31:34.7049321Z             },
2026-06-21T03:31:34.7049425Z             {
2026-06-21T03:31:34.7049579Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7049683Z               "line": 226
2026-06-21T03:31:34.7049783Z             },
2026-06-21T03:31:34.7049879Z             {
2026-06-21T03:31:34.7050026Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7050137Z               "line": 251
2026-06-21T03:31:34.7050241Z             },
2026-06-21T03:31:34.7050345Z             {
2026-06-21T03:31:34.7050494Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7050613Z               "line": 277
2026-06-21T03:31:34.7050713Z             },
2026-06-21T03:31:34.7050814Z             {
2026-06-21T03:31:34.7050966Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.7051066Z               "line": 124
2026-06-21T03:31:34.7051171Z             },
2026-06-21T03:31:34.7051381Z             {
2026-06-21T03:31:34.7051515Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.7051632Z               "line": 224
2026-06-21T03:31:34.7051732Z             }
2026-06-21T03:31:34.7051832Z           ]
2026-06-21T03:31:34.7051935Z         },
2026-06-21T03:31:34.7052045Z         "int": {
2026-06-21T03:31:34.7052160Z           "complete": false,
2026-06-21T03:31:34.7052263Z           "evidence": []
2026-06-21T03:31:34.7052364Z         },
2026-06-21T03:31:34.7052469Z         "unit": {
2026-06-21T03:31:34.7052583Z           "complete": true,
2026-06-21T03:31:34.7052694Z           "evidence": [
2026-06-21T03:31:34.7052907Z             {
2026-06-21T03:31:34.7053056Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:31:34.7053161Z               "line": 63
2026-06-21T03:31:34.7053270Z             },
2026-06-21T03:31:34.7053371Z             {
2026-06-21T03:31:34.7053513Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:31:34.7053628Z               "line": 73
2026-06-21T03:31:34.7053733Z             },
2026-06-21T03:31:34.7053838Z             {
2026-06-21T03:31:34.7053972Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:31:34.7054076Z               "line": 85
2026-06-21T03:31:34.7054181Z             },
2026-06-21T03:31:34.7054277Z             {
2026-06-21T03:31:34.7054419Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.7054532Z               "line": 346
2026-06-21T03:31:34.7054633Z             },
2026-06-21T03:31:34.7054732Z             {
2026-06-21T03:31:34.7054882Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:31:34.7054989Z               "line": 281
2026-06-21T03:31:34.7055093Z             },
2026-06-21T03:31:34.7055183Z             {
2026-06-21T03:31:34.7055327Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:31:34.7055445Z               "line": 322
2026-06-21T03:31:34.7055536Z             },
2026-06-21T03:31:34.7055651Z             {
2026-06-21T03:31:34.7055784Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:31:34.7055890Z               "line": 360
2026-06-21T03:31:34.7055994Z             },
2026-06-21T03:31:34.7056099Z             {
2026-06-21T03:31:34.7056253Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7056366Z               "line": 688
2026-06-21T03:31:34.7056466Z             },
2026-06-21T03:31:34.7056558Z             {
2026-06-21T03:31:34.7056709Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.7056820Z               "line": 397
2026-06-21T03:31:34.7056925Z             },
2026-06-21T03:31:34.7057038Z             {
2026-06-21T03:31:34.7057175Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.7057289Z               "line": 440
2026-06-21T03:31:34.7057383Z             }
2026-06-21T03:31:34.7057488Z           ]
2026-06-21T03:31:34.7057594Z         }
2026-06-21T03:31:34.7057688Z       }
2026-06-21T03:31:34.7057798Z     },
2026-06-21T03:31:34.7057894Z     {
2026-06-21T03:31:34.7058027Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T03:31:34.7058266Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T03:31:34.7058388Z       "requiredStages": [
2026-06-21T03:31:34.7058500Z         "impl",
2026-06-21T03:31:34.7058594Z         "unit"
2026-06-21T03:31:34.7058699Z       ],
2026-06-21T03:31:34.7058801Z       "stages": {
2026-06-21T03:31:34.7058909Z         "doc": {
2026-06-21T03:31:34.7059106Z           "complete": false,
2026-06-21T03:31:34.7059224Z           "evidence": []
2026-06-21T03:31:34.7059329Z         },
2026-06-21T03:31:34.7059430Z         "impl": {
2026-06-21T03:31:34.7059552Z           "complete": true,
2026-06-21T03:31:34.7059662Z           "evidence": [
2026-06-21T03:31:34.7059778Z             {
2026-06-21T03:31:34.7059914Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:31:34.7060023Z               "line": 169
2026-06-21T03:31:34.7060224Z             }
2026-06-21T03:31:34.7060324Z           ]
2026-06-21T03:31:34.7060430Z         },
2026-06-21T03:31:34.7060530Z         "int": {
2026-06-21T03:31:34.7060643Z           "complete": true,
2026-06-21T03:31:34.7060754Z           "evidence": [
2026-06-21T03:31:34.7060859Z             {
2026-06-21T03:31:34.7060996Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T03:31:34.7061097Z               "line": 44
2026-06-21T03:31:34.7061206Z             },
2026-06-21T03:31:34.7061302Z             {
2026-06-21T03:31:34.7061440Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T03:31:34.7061545Z               "line": 66
2026-06-21T03:31:34.7061746Z             }
2026-06-21T03:31:34.7061845Z           ]
2026-06-21T03:31:34.7061946Z         },
2026-06-21T03:31:34.7062051Z         "unit": {
2026-06-21T03:31:34.7062163Z           "complete": true,
2026-06-21T03:31:34.7062278Z           "evidence": [
2026-06-21T03:31:34.7062378Z             {
2026-06-21T03:31:34.7062533Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:31:34.7062643Z               "line": 186
2026-06-21T03:31:34.7062744Z             },
2026-06-21T03:31:34.7062847Z             {
2026-06-21T03:31:34.7062982Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:31:34.7063096Z               "line": 238
2026-06-21T03:31:34.7063196Z             },
2026-06-21T03:31:34.7063297Z             {
2026-06-21T03:31:34.7063434Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:31:34.7063544Z               "line": 266
2026-06-21T03:31:34.7063650Z             }
2026-06-21T03:31:34.7063745Z           ]
2026-06-21T03:31:34.7063859Z         }
2026-06-21T03:31:34.7063960Z       }
2026-06-21T03:31:34.7064064Z     },
2026-06-21T03:31:34.7064159Z     {
2026-06-21T03:31:34.7064303Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T03:31:34.7068587Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T03:31:34.7068759Z       "requiredStages": [],
2026-06-21T03:31:34.7068868Z       "stages": {
2026-06-21T03:31:34.7069079Z         "doc": {
2026-06-21T03:31:34.7069193Z           "complete": false,
2026-06-21T03:31:34.7069307Z           "evidence": []
2026-06-21T03:31:34.7069426Z         },
2026-06-21T03:31:34.7069526Z         "impl": {
2026-06-21T03:31:34.7069646Z           "complete": false,
2026-06-21T03:31:34.7069755Z           "evidence": []
2026-06-21T03:31:34.7069855Z         },
2026-06-21T03:31:34.7069966Z         "int": {
2026-06-21T03:31:34.7070079Z           "complete": false,
2026-06-21T03:31:34.7070194Z           "evidence": []
2026-06-21T03:31:34.7070295Z         },
2026-06-21T03:31:34.7070517Z         "unit": {
2026-06-21T03:31:34.7070622Z           "complete": false,
2026-06-21T03:31:34.7070718Z           "evidence": []
2026-06-21T03:31:34.7070822Z         }
2026-06-21T03:31:34.7070913Z       }
2026-06-21T03:31:34.7071023Z     },
2026-06-21T03:31:34.7071113Z     {
2026-06-21T03:31:34.7071272Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T03:31:34.7085328Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T03:31:34.7085962Z       "requiredStages": [
2026-06-21T03:31:34.7086081Z         "doc",
2026-06-21T03:31:34.7086184Z         "impl",
2026-06-21T03:31:34.7086299Z         "unit",
2026-06-21T03:31:34.7086398Z         "int"
2026-06-21T03:31:34.7086506Z       ],
2026-06-21T03:31:34.7086611Z       "stages": {
2026-06-21T03:31:34.7086721Z         "doc": {
2026-06-21T03:31:34.7086844Z           "complete": true,
2026-06-21T03:31:34.7086955Z           "evidence": [
2026-06-21T03:31:34.7087060Z             {
2026-06-21T03:31:34.7087197Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7087323Z               "line": 468
2026-06-21T03:31:34.7087427Z             }
2026-06-21T03:31:34.7087541Z           ]
2026-06-21T03:31:34.7087642Z         },
2026-06-21T03:31:34.7087751Z         "impl": {
2026-06-21T03:31:34.7087865Z           "complete": true,
2026-06-21T03:31:34.7087981Z           "evidence": [
2026-06-21T03:31:34.7088090Z             {
2026-06-21T03:31:34.7088233Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7088342Z               "line": 342
2026-06-21T03:31:34.7088447Z             },
2026-06-21T03:31:34.7088544Z             {
2026-06-21T03:31:34.7088690Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7088794Z               "line": 1188
2026-06-21T03:31:34.7088894Z             },
2026-06-21T03:31:34.7089082Z             {
2026-06-21T03:31:34.7089221Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7089345Z               "line": 715
2026-06-21T03:31:34.7089469Z             }
2026-06-21T03:31:34.7089579Z           ]
2026-06-21T03:31:34.7089683Z         },
2026-06-21T03:31:34.7089788Z         "int": {
2026-06-21T03:31:34.7089894Z           "complete": true,
2026-06-21T03:31:34.7090003Z           "evidence": [
2026-06-21T03:31:34.7090098Z             {
2026-06-21T03:31:34.7090237Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7090355Z               "line": 1163
2026-06-21T03:31:34.7090452Z             },
2026-06-21T03:31:34.7090556Z             {
2026-06-21T03:31:34.7090704Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7090824Z               "line": 1264
2026-06-21T03:31:34.7090927Z             },
2026-06-21T03:31:34.7091033Z             {
2026-06-21T03:31:34.7091168Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7091281Z               "line": 1152
2026-06-21T03:31:34.7091382Z             }
2026-06-21T03:31:34.7091483Z           ]
2026-06-21T03:31:34.7091594Z         },
2026-06-21T03:31:34.7091699Z         "unit": {
2026-06-21T03:31:34.7091814Z           "complete": true,
2026-06-21T03:31:34.7091928Z           "evidence": [
2026-06-21T03:31:34.7092023Z             {
2026-06-21T03:31:34.7092177Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7092286Z               "line": 2624
2026-06-21T03:31:34.7092520Z             }
2026-06-21T03:31:34.7092629Z           ]
2026-06-21T03:31:34.7092730Z         }
2026-06-21T03:31:34.7092844Z       }
2026-06-21T03:31:34.7092944Z     },
2026-06-21T03:31:34.7093045Z     {
2026-06-21T03:31:34.7093197Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T03:31:34.7093665Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T03:31:34.7093787Z       "requiredStages": [
2026-06-21T03:31:34.7093887Z         "impl",
2026-06-21T03:31:34.7093992Z         "unit",
2026-06-21T03:31:34.7094194Z         "int"
2026-06-21T03:31:34.7094304Z       ],
2026-06-21T03:31:34.7094420Z       "stages": {
2026-06-21T03:31:34.7094528Z         "doc": {
2026-06-21T03:31:34.7094648Z           "complete": false,
2026-06-21T03:31:34.7094757Z           "evidence": []
2026-06-21T03:31:34.7094866Z         },
2026-06-21T03:31:34.7094963Z         "impl": {
2026-06-21T03:31:34.7095091Z           "complete": true,
2026-06-21T03:31:34.7095200Z           "evidence": [
2026-06-21T03:31:34.7095306Z             {
2026-06-21T03:31:34.7095467Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7095578Z               "line": 178
2026-06-21T03:31:34.7095687Z             },
2026-06-21T03:31:34.7095792Z             {
2026-06-21T03:31:34.7095945Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7096063Z               "line": 226
2026-06-21T03:31:34.7096169Z             },
2026-06-21T03:31:34.7096279Z             {
2026-06-21T03:31:34.7096417Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.7096537Z               "line": 79
2026-06-21T03:31:34.7096636Z             },
2026-06-21T03:31:34.7096744Z             {
2026-06-21T03:31:34.7096883Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7096991Z               "line": 52
2026-06-21T03:31:34.7097099Z             },
2026-06-21T03:31:34.7097210Z             {
2026-06-21T03:31:34.7097353Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7097462Z               "line": 263
2026-06-21T03:31:34.7097568Z             },
2026-06-21T03:31:34.7097677Z             {
2026-06-21T03:31:34.7097816Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7097930Z               "line": 27
2026-06-21T03:31:34.7098039Z             },
2026-06-21T03:31:34.7098140Z             {
2026-06-21T03:31:34.7098292Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7098406Z               "line": 79
2026-06-21T03:31:34.7098507Z             },
2026-06-21T03:31:34.7098611Z             {
2026-06-21T03:31:34.7098755Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7098865Z               "line": 102
2026-06-21T03:31:34.7099060Z             },
2026-06-21T03:31:34.7099161Z             {
2026-06-21T03:31:34.7099311Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7099431Z               "line": 116
2026-06-21T03:31:34.7099539Z             }
2026-06-21T03:31:34.7099657Z           ]
2026-06-21T03:31:34.7099762Z         },
2026-06-21T03:31:34.7099863Z         "int": {
2026-06-21T03:31:34.7099966Z           "complete": true,
2026-06-21T03:31:34.7100082Z           "evidence": [
2026-06-21T03:31:34.7100192Z             {
2026-06-21T03:31:34.7100343Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T03:31:34.7100449Z               "line": 43
2026-06-21T03:31:34.7100554Z             }
2026-06-21T03:31:34.7100658Z           ]
2026-06-21T03:31:34.7100764Z         },
2026-06-21T03:31:34.7100874Z         "unit": {
2026-06-21T03:31:34.7100987Z           "complete": true,
2026-06-21T03:31:34.7101093Z           "evidence": [
2026-06-21T03:31:34.7101207Z             {
2026-06-21T03:31:34.7101346Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7101450Z               "line": 678
2026-06-21T03:31:34.7101647Z             },
2026-06-21T03:31:34.7101765Z             {
2026-06-21T03:31:34.7101908Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7102023Z               "line": 495
2026-06-21T03:31:34.7102126Z             },
2026-06-21T03:31:34.7102231Z             {
2026-06-21T03:31:34.7102374Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7102493Z               "line": 124
2026-06-21T03:31:34.7102593Z             },
2026-06-21T03:31:34.7102699Z             {
2026-06-21T03:31:34.7102846Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7102957Z               "line": 143
2026-06-21T03:31:34.7103160Z             },
2026-06-21T03:31:34.7103266Z             {
2026-06-21T03:31:34.7103419Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7103528Z               "line": 160
2026-06-21T03:31:34.7103639Z             },
2026-06-21T03:31:34.7103743Z             {
2026-06-21T03:31:34.7103891Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7104000Z               "line": 187
2026-06-21T03:31:34.7104109Z             },
2026-06-21T03:31:34.7104215Z             {
2026-06-21T03:31:34.7104357Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:31:34.7104466Z               "line": 206
2026-06-21T03:31:34.7104571Z             },
2026-06-21T03:31:34.7104674Z             {
2026-06-21T03:31:34.7104806Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7104922Z               "line": 229
2026-06-21T03:31:34.7105022Z             }
2026-06-21T03:31:34.7105121Z           ]
2026-06-21T03:31:34.7105237Z         }
2026-06-21T03:31:34.7105332Z       }
2026-06-21T03:31:34.7105445Z     },
2026-06-21T03:31:34.7105552Z     {
2026-06-21T03:31:34.7105703Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T03:31:34.7109444Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T03:31:34.7109654Z       "requiredStages": [
2026-06-21T03:31:34.7109768Z         "impl",
2026-06-21T03:31:34.7109876Z         "unit"
2026-06-21T03:31:34.7109967Z       ],
2026-06-21T03:31:34.7110080Z       "stages": {
2026-06-21T03:31:34.7110183Z         "doc": {
2026-06-21T03:31:34.7110298Z           "complete": false,
2026-06-21T03:31:34.7110409Z           "evidence": []
2026-06-21T03:31:34.7110508Z         },
2026-06-21T03:31:34.7110623Z         "impl": {
2026-06-21T03:31:34.7110732Z           "complete": true,
2026-06-21T03:31:34.7110855Z           "evidence": [
2026-06-21T03:31:34.7110957Z             {
2026-06-21T03:31:34.7111119Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7111233Z               "line": 1174
2026-06-21T03:31:34.7111333Z             },
2026-06-21T03:31:34.7111438Z             {
2026-06-21T03:31:34.7111582Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7111691Z               "line": 1400
2026-06-21T03:31:34.7111795Z             }
2026-06-21T03:31:34.7111892Z           ]
2026-06-21T03:31:34.7111996Z         },
2026-06-21T03:31:34.7112092Z         "int": {
2026-06-21T03:31:34.7112202Z           "complete": false,
2026-06-21T03:31:34.7112316Z           "evidence": []
2026-06-21T03:31:34.7112425Z         },
2026-06-21T03:31:34.7112536Z         "unit": {
2026-06-21T03:31:34.7112649Z           "complete": true,
2026-06-21T03:31:34.7112758Z           "evidence": [
2026-06-21T03:31:34.7112853Z             {
2026-06-21T03:31:34.7113020Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:31:34.7113134Z               "line": 161
2026-06-21T03:31:34.7113245Z             }
2026-06-21T03:31:34.7113345Z           ]
2026-06-21T03:31:34.7113444Z         }
2026-06-21T03:31:34.7113541Z       }
2026-06-21T03:31:34.7113641Z     },
2026-06-21T03:31:34.7113749Z     {
2026-06-21T03:31:34.7114021Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T03:31:34.7115840Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T03:31:34.7116079Z       "requiredStages": [
2026-06-21T03:31:34.7116188Z         "impl",
2026-06-21T03:31:34.7116297Z         "unit"
2026-06-21T03:31:34.7116403Z       ],
2026-06-21T03:31:34.7116517Z       "stages": {
2026-06-21T03:31:34.7116626Z         "doc": {
2026-06-21T03:31:34.7116742Z           "complete": false,
2026-06-21T03:31:34.7116869Z           "evidence": []
2026-06-21T03:31:34.7116955Z         },
2026-06-21T03:31:34.7117061Z         "impl": {
2026-06-21T03:31:34.7117179Z           "complete": true,
2026-06-21T03:31:34.7117279Z           "evidence": [
2026-06-21T03:31:34.7117390Z             {
2026-06-21T03:31:34.7117542Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.7117648Z               "line": 257
2026-06-21T03:31:34.7117752Z             }
2026-06-21T03:31:34.7117856Z           ]
2026-06-21T03:31:34.7117965Z         },
2026-06-21T03:31:34.7118069Z         "int": {
2026-06-21T03:31:34.7118191Z           "complete": false,
2026-06-21T03:31:34.7118311Z           "evidence": []
2026-06-21T03:31:34.7118416Z         },
2026-06-21T03:31:34.7118511Z         "unit": {
2026-06-21T03:31:34.7118626Z           "complete": true,
2026-06-21T03:31:34.7118736Z           "evidence": [
2026-06-21T03:31:34.7118840Z             {
2026-06-21T03:31:34.7119074Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.7119192Z               "line": 360
2026-06-21T03:31:34.7119299Z             }
2026-06-21T03:31:34.7119403Z           ]
2026-06-21T03:31:34.7119512Z         }
2026-06-21T03:31:34.7119618Z       }
2026-06-21T03:31:34.7119722Z     },
2026-06-21T03:31:34.7119831Z     {
2026-06-21T03:31:34.7119966Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T03:31:34.7121798Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T03:31:34.7121936Z       "requiredStages": [
2026-06-21T03:31:34.7122045Z         "impl",
2026-06-21T03:31:34.7122152Z         "unit"
2026-06-21T03:31:34.7122256Z       ],
2026-06-21T03:31:34.7122365Z       "stages": {
2026-06-21T03:31:34.7122472Z         "doc": {
2026-06-21T03:31:34.7122575Z           "complete": false,
2026-06-21T03:31:34.7122694Z           "evidence": []
2026-06-21T03:31:34.7122786Z         },
2026-06-21T03:31:34.7122894Z         "impl": {
2026-06-21T03:31:34.7122995Z           "complete": true,
2026-06-21T03:31:34.7123115Z           "evidence": [
2026-06-21T03:31:34.7123214Z             {
2026-06-21T03:31:34.7123384Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.7123504Z               "line": 1018
2026-06-21T03:31:34.7123613Z             },
2026-06-21T03:31:34.7123718Z             {
2026-06-21T03:31:34.7123867Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7123975Z               "line": 283
2026-06-21T03:31:34.7124186Z             },
2026-06-21T03:31:34.7124280Z             {
2026-06-21T03:31:34.7124425Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7124524Z               "line": 316
2026-06-21T03:31:34.7124638Z             },
2026-06-21T03:31:34.7124735Z             {
2026-06-21T03:31:34.7124878Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:31:34.7124987Z               "line": 26
2026-06-21T03:31:34.7125092Z             }
2026-06-21T03:31:34.7125201Z           ]
2026-06-21T03:31:34.7125302Z         },
2026-06-21T03:31:34.7125412Z         "int": {
2026-06-21T03:31:34.7125520Z           "complete": false,
2026-06-21T03:31:34.7125725Z           "evidence": []
2026-06-21T03:31:34.7125827Z         },
2026-06-21T03:31:34.7125936Z         "unit": {
2026-06-21T03:31:34.7126057Z           "complete": true,
2026-06-21T03:31:34.7126170Z           "evidence": [
2026-06-21T03:31:34.7126271Z             {
2026-06-21T03:31:34.7126409Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:31:34.7126528Z               "line": 271
2026-06-21T03:31:34.7126639Z             },
2026-06-21T03:31:34.7126743Z             {
2026-06-21T03:31:34.7126871Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:31:34.7126973Z               "line": 348
2026-06-21T03:31:34.7127077Z             }
2026-06-21T03:31:34.7127176Z           ]
2026-06-21T03:31:34.7127282Z         }
2026-06-21T03:31:34.7127386Z       }
2026-06-21T03:31:34.7127482Z     },
2026-06-21T03:31:34.7127578Z     {
2026-06-21T03:31:34.7127706Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T03:31:34.7127917Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T03:31:34.7128039Z       "requiredStages": [
2026-06-21T03:31:34.7128150Z         "impl",
2026-06-21T03:31:34.7128256Z         "unit"
2026-06-21T03:31:34.7128359Z       ],
2026-06-21T03:31:34.7128463Z       "stages": {
2026-06-21T03:31:34.7128568Z         "doc": {
2026-06-21T03:31:34.7128694Z           "complete": false,
2026-06-21T03:31:34.7128799Z           "evidence": []
2026-06-21T03:31:34.7128900Z         },
2026-06-21T03:31:34.7129085Z         "impl": {
2026-06-21T03:31:34.7129196Z           "complete": true,
2026-06-21T03:31:34.7129306Z           "evidence": [
2026-06-21T03:31:34.7129409Z             {
2026-06-21T03:31:34.7129558Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7129662Z               "line": 40
2026-06-21T03:31:34.7129772Z             },
2026-06-21T03:31:34.7129878Z             {
2026-06-21T03:31:34.7130015Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7130135Z               "line": 103
2026-06-21T03:31:34.7130235Z             },
2026-06-21T03:31:34.7130344Z             {
2026-06-21T03:31:34.7130474Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7130578Z               "line": 218
2026-06-21T03:31:34.7130693Z             },
2026-06-21T03:31:34.7130789Z             {
2026-06-21T03:31:34.7130935Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7131039Z               "line": 323
2026-06-21T03:31:34.7131140Z             }
2026-06-21T03:31:34.7131242Z           ]
2026-06-21T03:31:34.7131337Z         },
2026-06-21T03:31:34.7131438Z         "int": {
2026-06-21T03:31:34.7131557Z           "complete": false,
2026-06-21T03:31:34.7131661Z           "evidence": []
2026-06-21T03:31:34.7131763Z         },
2026-06-21T03:31:34.7131867Z         "unit": {
2026-06-21T03:31:34.7131971Z           "complete": true,
2026-06-21T03:31:34.7132087Z           "evidence": [
2026-06-21T03:31:34.7132196Z             {
2026-06-21T03:31:34.7132339Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7132449Z               "line": 361
2026-06-21T03:31:34.7132549Z             },
2026-06-21T03:31:34.7132653Z             {
2026-06-21T03:31:34.7132792Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7132901Z               "line": 433
2026-06-21T03:31:34.7133130Z             },
2026-06-21T03:31:34.7133226Z             {
2026-06-21T03:31:34.7133361Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7133468Z               "line": 496
2026-06-21T03:31:34.7133574Z             },
2026-06-21T03:31:34.7133680Z             {
2026-06-21T03:31:34.7133811Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7133911Z               "line": 517
2026-06-21T03:31:34.7134016Z             }
2026-06-21T03:31:34.7134122Z           ]
2026-06-21T03:31:34.7134225Z         }
2026-06-21T03:31:34.7134331Z       }
2026-06-21T03:31:34.7134437Z     },
2026-06-21T03:31:34.7134535Z     {
2026-06-21T03:31:34.7134803Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T03:31:34.7137155Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T03:31:34.7137293Z       "requiredStages": [
2026-06-21T03:31:34.7137402Z         "impl",
2026-06-21T03:31:34.7137513Z         "unit"
2026-06-21T03:31:34.7137622Z       ],
2026-06-21T03:31:34.7137717Z       "stages": {
2026-06-21T03:31:34.7137828Z         "doc": {
2026-06-21T03:31:34.7137951Z           "complete": false,
2026-06-21T03:31:34.7138061Z           "evidence": []
2026-06-21T03:31:34.7138167Z         },
2026-06-21T03:31:34.7138271Z         "impl": {
2026-06-21T03:31:34.7138385Z           "complete": true,
2026-06-21T03:31:34.7138492Z           "evidence": [
2026-06-21T03:31:34.7138599Z             {
2026-06-21T03:31:34.7138754Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.7138859Z               "line": 402
2026-06-21T03:31:34.7139033Z             },
2026-06-21T03:31:34.7139133Z             {
2026-06-21T03:31:34.7139288Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.7139398Z               "line": 446
2026-06-21T03:31:34.7139517Z             }
2026-06-21T03:31:34.7139612Z           ]
2026-06-21T03:31:34.7139707Z         },
2026-06-21T03:31:34.7139822Z         "int": {
2026-06-21T03:31:34.7139936Z           "complete": false,
2026-06-21T03:31:34.7140047Z           "evidence": []
2026-06-21T03:31:34.7140146Z         },
2026-06-21T03:31:34.7140255Z         "unit": {
2026-06-21T03:31:34.7140371Z           "complete": true,
2026-06-21T03:31:34.7140475Z           "evidence": [
2026-06-21T03:31:34.7140585Z             {
2026-06-21T03:31:34.7140734Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.7140833Z               "line": 910
2026-06-21T03:31:34.7140938Z             }
2026-06-21T03:31:34.7141044Z           ]
2026-06-21T03:31:34.7141142Z         }
2026-06-21T03:31:34.7141229Z       }
2026-06-21T03:31:34.7141330Z     },
2026-06-21T03:31:34.7141429Z     {
2026-06-21T03:31:34.7141566Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T03:31:34.7141719Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T03:31:34.7141831Z       "requiredStages": [
2026-06-21T03:31:34.7141940Z         "impl",
2026-06-21T03:31:34.7142046Z         "unit"
2026-06-21T03:31:34.7142150Z       ],
2026-06-21T03:31:34.7142255Z       "stages": {
2026-06-21T03:31:34.7142361Z         "doc": {
2026-06-21T03:31:34.7142479Z           "complete": false,
2026-06-21T03:31:34.7142589Z           "evidence": []
2026-06-21T03:31:34.7142689Z         },
2026-06-21T03:31:34.7142904Z         "impl": {
2026-06-21T03:31:34.7143018Z           "complete": true,
2026-06-21T03:31:34.7143118Z           "evidence": [
2026-06-21T03:31:34.7143223Z             {
2026-06-21T03:31:34.7143362Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7143466Z               "line": 116
2026-06-21T03:31:34.7143577Z             },
2026-06-21T03:31:34.7143681Z             {
2026-06-21T03:31:34.7143815Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7143926Z               "line": 211
2026-06-21T03:31:34.7144033Z             }
2026-06-21T03:31:34.7144129Z           ]
2026-06-21T03:31:34.7144226Z         },
2026-06-21T03:31:34.7144424Z         "int": {
2026-06-21T03:31:34.7144528Z           "complete": false,
2026-06-21T03:31:34.7144644Z           "evidence": []
2026-06-21T03:31:34.7144738Z         },
2026-06-21T03:31:34.7144843Z         "unit": {
2026-06-21T03:31:34.7144949Z           "complete": true,
2026-06-21T03:31:34.7145063Z           "evidence": [
2026-06-21T03:31:34.7145158Z             {
2026-06-21T03:31:34.7145292Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7145396Z               "line": 388
2026-06-21T03:31:34.7145497Z             },
2026-06-21T03:31:34.7145597Z             {
2026-06-21T03:31:34.7145721Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7145827Z               "line": 469
2026-06-21T03:31:34.7145931Z             }
2026-06-21T03:31:34.7146031Z           ]
2026-06-21T03:31:34.7146137Z         }
2026-06-21T03:31:34.7146236Z       }
2026-06-21T03:31:34.7146341Z     },
2026-06-21T03:31:34.7146436Z     {
2026-06-21T03:31:34.7146579Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T03:31:34.7147715Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T03:31:34.7147830Z       "requiredStages": [
2026-06-21T03:31:34.7147935Z         "impl",
2026-06-21T03:31:34.7148040Z         "unit"
2026-06-21T03:31:34.7148145Z       ],
2026-06-21T03:31:34.7148254Z       "stages": {
2026-06-21T03:31:34.7148364Z         "doc": {
2026-06-21T03:31:34.7148474Z           "complete": true,
2026-06-21T03:31:34.7148588Z           "evidence": [
2026-06-21T03:31:34.7148694Z             {
2026-06-21T03:31:34.7148822Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7148935Z               "line": 206
2026-06-21T03:31:34.7149136Z             }
2026-06-21T03:31:34.7149236Z           ]
2026-06-21T03:31:34.7149352Z         },
2026-06-21T03:31:34.7149456Z         "impl": {
2026-06-21T03:31:34.7149569Z           "complete": true,
2026-06-21T03:31:34.7149679Z           "evidence": [
2026-06-21T03:31:34.7149778Z             {
2026-06-21T03:31:34.7149929Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7150035Z               "line": 691
2026-06-21T03:31:34.7150144Z             },
2026-06-21T03:31:34.7150282Z             {
2026-06-21T03:31:34.7150421Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7150529Z               "line": 791
2026-06-21T03:31:34.7150631Z             },
2026-06-21T03:31:34.7150740Z             {
2026-06-21T03:31:34.7150902Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7151036Z               "line": 1120
2026-06-21T03:31:34.7151140Z             },
2026-06-21T03:31:34.7151251Z             {
2026-06-21T03:31:34.7151402Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.7151522Z               "line": 184
2026-06-21T03:31:34.7151633Z             }
2026-06-21T03:31:34.7151736Z           ]
2026-06-21T03:31:34.7151842Z         },
2026-06-21T03:31:34.7151938Z         "int": {
2026-06-21T03:31:34.7152050Z           "complete": false,
2026-06-21T03:31:34.7152284Z           "evidence": []
2026-06-21T03:31:34.7152386Z         },
2026-06-21T03:31:34.7152495Z         "unit": {
2026-06-21T03:31:34.7152601Z           "complete": true,
2026-06-21T03:31:34.7152715Z           "evidence": [
2026-06-21T03:31:34.7152810Z             {
2026-06-21T03:31:34.7152954Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7153053Z               "line": 1169
2026-06-21T03:31:34.7153164Z             },
2026-06-21T03:31:34.7153268Z             {
2026-06-21T03:31:34.7153416Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:31:34.7153522Z               "line": 44
2026-06-21T03:31:34.7153711Z             },
2026-06-21T03:31:34.7153817Z             {
2026-06-21T03:31:34.7153975Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T03:31:34.7154084Z               "line": 52
2026-06-21T03:31:34.7154190Z             },
2026-06-21T03:31:34.7154293Z             {
2026-06-21T03:31:34.7154438Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:31:34.7154551Z               "line": 57
2026-06-21T03:31:34.7154651Z             },
2026-06-21T03:31:34.7154762Z             {
2026-06-21T03:31:34.7154917Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T03:31:34.7155036Z               "line": 54
2026-06-21T03:31:34.7155127Z             }
2026-06-21T03:31:34.7155228Z           ]
2026-06-21T03:31:34.7155332Z         }
2026-06-21T03:31:34.7155437Z       }
2026-06-21T03:31:34.7155543Z     },
2026-06-21T03:31:34.7155647Z     {
2026-06-21T03:31:34.7155795Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T03:31:34.7156038Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T03:31:34.7156167Z       "requiredStages": [
2026-06-21T03:31:34.7156271Z         "impl",
2026-06-21T03:31:34.7156382Z         "unit"
2026-06-21T03:31:34.7156486Z       ],
2026-06-21T03:31:34.7156591Z       "stages": {
2026-06-21T03:31:34.7156702Z         "doc": {
2026-06-21T03:31:34.7156824Z           "complete": false,
2026-06-21T03:31:34.7156939Z           "evidence": []
2026-06-21T03:31:34.7157041Z         },
2026-06-21T03:31:34.7157153Z         "impl": {
2026-06-21T03:31:34.7157262Z           "complete": true,
2026-06-21T03:31:34.7157372Z           "evidence": [
2026-06-21T03:31:34.7157480Z             {
2026-06-21T03:31:34.7157627Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7157733Z               "line": 26
2026-06-21T03:31:34.7157837Z             },
2026-06-21T03:31:34.7157942Z             {
2026-06-21T03:31:34.7158090Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7158208Z               "line": 135
2026-06-21T03:31:34.7158310Z             },
2026-06-21T03:31:34.7158414Z             {
2026-06-21T03:31:34.7158571Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7158681Z               "line": 26
2026-06-21T03:31:34.7158781Z             },
2026-06-21T03:31:34.7158895Z             {
2026-06-21T03:31:34.7159124Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7159239Z               "line": 237
2026-06-21T03:31:34.7159344Z             }
2026-06-21T03:31:34.7159449Z           ]
2026-06-21T03:31:34.7159554Z         },
2026-06-21T03:31:34.7159659Z         "int": {
2026-06-21T03:31:34.7159768Z           "complete": false,
2026-06-21T03:31:34.7159874Z           "evidence": []
2026-06-21T03:31:34.7159974Z         },
2026-06-21T03:31:34.7160082Z         "unit": {
2026-06-21T03:31:34.7160201Z           "complete": true,
2026-06-21T03:31:34.7160310Z           "evidence": [
2026-06-21T03:31:34.7160408Z             {
2026-06-21T03:31:34.7160556Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7160662Z               "line": 161
2026-06-21T03:31:34.7160760Z             },
2026-06-21T03:31:34.7160867Z             {
2026-06-21T03:31:34.7161010Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7161224Z               "line": 170
2026-06-21T03:31:34.7161334Z             },
2026-06-21T03:31:34.7161433Z             {
2026-06-21T03:31:34.7161577Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7161696Z               "line": 179
2026-06-21T03:31:34.7161786Z             },
2026-06-21T03:31:34.7161892Z             {
2026-06-21T03:31:34.7162029Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7162136Z               "line": 190
2026-06-21T03:31:34.7162240Z             },
2026-06-21T03:31:34.7162340Z             {
2026-06-21T03:31:34.7162488Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7162710Z               "line": 199
2026-06-21T03:31:34.7162825Z             },
2026-06-21T03:31:34.7162928Z             {
2026-06-21T03:31:34.7163070Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7163180Z               "line": 216
2026-06-21T03:31:34.7163285Z             },
2026-06-21T03:31:34.7163399Z             {
2026-06-21T03:31:34.7163533Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:31:34.7163647Z               "line": 242
2026-06-21T03:31:34.7163748Z             },
2026-06-21T03:31:34.7163857Z             {
2026-06-21T03:31:34.7164000Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7164111Z               "line": 295
2026-06-21T03:31:34.7164210Z             },
2026-06-21T03:31:34.7164315Z             {
2026-06-21T03:31:34.7164473Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7164591Z               "line": 244
2026-06-21T03:31:34.7164688Z             },
2026-06-21T03:31:34.7164801Z             {
2026-06-21T03:31:34.7164964Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7165070Z               "line": 265
2026-06-21T03:31:34.7165172Z             },
2026-06-21T03:31:34.7165279Z             {
2026-06-21T03:31:34.7165427Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7165539Z               "line": 293
2026-06-21T03:31:34.7165635Z             },
2026-06-21T03:31:34.7165740Z             {
2026-06-21T03:31:34.7165892Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7166007Z               "line": 317
2026-06-21T03:31:34.7166112Z             },
2026-06-21T03:31:34.7166207Z             {
2026-06-21T03:31:34.7166346Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:31:34.7166460Z               "line": 327
2026-06-21T03:31:34.7166564Z             },
2026-06-21T03:31:34.7166670Z             {
2026-06-21T03:31:34.7166817Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.7166937Z               "line": 540
2026-06-21T03:31:34.7167041Z             }
2026-06-21T03:31:34.7167146Z           ]
2026-06-21T03:31:34.7167252Z         }
2026-06-21T03:31:34.7167352Z       }
2026-06-21T03:31:34.7167456Z     },
2026-06-21T03:31:34.7167557Z     {
2026-06-21T03:31:34.7167703Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T03:31:34.7172632Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T03:31:34.7173001Z       "requiredStages": [],
2026-06-21T03:31:34.7173101Z       "stages": {
2026-06-21T03:31:34.7173213Z         "doc": {
2026-06-21T03:31:34.7173332Z           "complete": false,
2026-06-21T03:31:34.7173441Z           "evidence": []
2026-06-21T03:31:34.7173544Z         },
2026-06-21T03:31:34.7173645Z         "impl": {
2026-06-21T03:31:34.7173775Z           "complete": false,
2026-06-21T03:31:34.7173878Z           "evidence": []
2026-06-21T03:31:34.7173989Z         },
2026-06-21T03:31:34.7174093Z         "int": {
2026-06-21T03:31:34.7174202Z           "complete": false,
2026-06-21T03:31:34.7174313Z           "evidence": []
2026-06-21T03:31:34.7174417Z         },
2026-06-21T03:31:34.7174526Z         "unit": {
2026-06-21T03:31:34.7174637Z           "complete": false,
2026-06-21T03:31:34.7174751Z           "evidence": []
2026-06-21T03:31:34.7174856Z         }
2026-06-21T03:31:34.7174957Z       }
2026-06-21T03:31:34.7175061Z     },
2026-06-21T03:31:34.7175156Z     {
2026-06-21T03:31:34.7175305Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T03:31:34.7176863Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T03:31:34.7176997Z       "requiredStages": [
2026-06-21T03:31:34.7177100Z         "impl",
2026-06-21T03:31:34.7177207Z         "unit",
2026-06-21T03:31:34.7177310Z         "int"
2026-06-21T03:31:34.7177420Z       ],
2026-06-21T03:31:34.7177521Z       "stages": {
2026-06-21T03:31:34.7177625Z         "doc": {
2026-06-21T03:31:34.7177744Z           "complete": false,
2026-06-21T03:31:34.7177865Z           "evidence": []
2026-06-21T03:31:34.7177968Z         },
2026-06-21T03:31:34.7178069Z         "impl": {
2026-06-21T03:31:34.7178190Z           "complete": true,
2026-06-21T03:31:34.7178287Z           "evidence": [
2026-06-21T03:31:34.7178396Z             {
2026-06-21T03:31:34.7178549Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7178662Z               "line": 538
2026-06-21T03:31:34.7178766Z             },
2026-06-21T03:31:34.7178872Z             {
2026-06-21T03:31:34.7179095Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.7179210Z               "line": 625
2026-06-21T03:31:34.7179314Z             },
2026-06-21T03:31:34.7179415Z             {
2026-06-21T03:31:34.7179605Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:31:34.7179711Z               "line": 21
2026-06-21T03:31:34.7179806Z             }
2026-06-21T03:31:34.7179915Z           ]
2026-06-21T03:31:34.7180011Z         },
2026-06-21T03:31:34.7180116Z         "int": {
2026-06-21T03:31:34.7180239Z           "complete": true,
2026-06-21T03:31:34.7180350Z           "evidence": [
2026-06-21T03:31:34.7180450Z             {
2026-06-21T03:31:34.7180626Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:31:34.7180746Z               "line": 236
2026-06-21T03:31:34.7180941Z             },
2026-06-21T03:31:34.7181052Z             {
2026-06-21T03:31:34.7181221Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:31:34.7181340Z               "line": 396
2026-06-21T03:31:34.7181439Z             },
2026-06-21T03:31:34.7181548Z             {
2026-06-21T03:31:34.7181720Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7181824Z               "line": 1441
2026-06-21T03:31:34.7181924Z             },
2026-06-21T03:31:34.7182030Z             {
2026-06-21T03:31:34.7182205Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7182421Z               "line": 1593
2026-06-21T03:31:34.7182515Z             }
2026-06-21T03:31:34.7182621Z           ]
2026-06-21T03:31:34.7182721Z         },
2026-06-21T03:31:34.7182830Z         "unit": {
2026-06-21T03:31:34.7182946Z           "complete": true,
2026-06-21T03:31:34.7183059Z           "evidence": [
2026-06-21T03:31:34.7183164Z             {
2026-06-21T03:31:34.7183322Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7183431Z               "line": 887
2026-06-21T03:31:34.7183537Z             }
2026-06-21T03:31:34.7183646Z           ]
2026-06-21T03:31:34.7183750Z         }
2026-06-21T03:31:34.7183849Z       }
2026-06-21T03:31:34.7183949Z     },
2026-06-21T03:31:34.7184057Z     {
2026-06-21T03:31:34.7184200Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T03:31:34.7184372Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T03:31:34.7184491Z       "requiredStages": [
2026-06-21T03:31:34.7184587Z         "impl",
2026-06-21T03:31:34.7184701Z         "unit"
2026-06-21T03:31:34.7184810Z       ],
2026-06-21T03:31:34.7184916Z       "stages": {
2026-06-21T03:31:34.7185021Z         "doc": {
2026-06-21T03:31:34.7185125Z           "complete": false,
2026-06-21T03:31:34.7185240Z           "evidence": []
2026-06-21T03:31:34.7185335Z         },
2026-06-21T03:31:34.7185450Z         "impl": {
2026-06-21T03:31:34.7185569Z           "complete": true,
2026-06-21T03:31:34.7185679Z           "evidence": [
2026-06-21T03:31:34.7185788Z             {
2026-06-21T03:31:34.7185926Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.7186041Z               "line": 25
2026-06-21T03:31:34.7186142Z             },
2026-06-21T03:31:34.7186251Z             {
2026-06-21T03:31:34.7186379Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7186490Z               "line": 26
2026-06-21T03:31:34.7186594Z             },
2026-06-21T03:31:34.7186697Z             {
2026-06-21T03:31:34.7186842Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7186960Z               "line": 159
2026-06-21T03:31:34.7187069Z             }
2026-06-21T03:31:34.7187166Z           ]
2026-06-21T03:31:34.7187266Z         },
2026-06-21T03:31:34.7187379Z         "int": {
2026-06-21T03:31:34.7187495Z           "complete": false,
2026-06-21T03:31:34.7187608Z           "evidence": []
2026-06-21T03:31:34.7187704Z         },
2026-06-21T03:31:34.7187814Z         "unit": {
2026-06-21T03:31:34.7187923Z           "complete": true,
2026-06-21T03:31:34.7188038Z           "evidence": [
2026-06-21T03:31:34.7188139Z             {
2026-06-21T03:31:34.7188271Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.7188382Z               "line": 188
2026-06-21T03:31:34.7188486Z             },
2026-06-21T03:31:34.7188590Z             {
2026-06-21T03:31:34.7188726Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.7188824Z               "line": 240
2026-06-21T03:31:34.7188933Z             },
2026-06-21T03:31:34.7189109Z             {
2026-06-21T03:31:34.7189250Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7189370Z               "line": 186
2026-06-21T03:31:34.7189484Z             }
2026-06-21T03:31:34.7189593Z           ]
2026-06-21T03:31:34.7189684Z         }
2026-06-21T03:31:34.7189795Z       }
2026-06-21T03:31:34.7189898Z     },
2026-06-21T03:31:34.7190094Z     {
2026-06-21T03:31:34.7190218Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T03:31:34.7190414Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T03:31:34.7190532Z       "requiredStages": [
2026-06-21T03:31:34.7190634Z         "impl",
2026-06-21T03:31:34.7190738Z         "unit"
2026-06-21T03:31:34.7190843Z       ],
2026-06-21T03:31:34.7190949Z       "stages": {
2026-06-21T03:31:34.7191052Z         "doc": {
2026-06-21T03:31:34.7191172Z           "complete": false,
2026-06-21T03:31:34.7191293Z           "evidence": []
2026-06-21T03:31:34.7191390Z         },
2026-06-21T03:31:34.7191501Z         "impl": {
2026-06-21T03:31:34.7191710Z           "complete": true,
2026-06-21T03:31:34.7191819Z           "evidence": [
2026-06-21T03:31:34.7191910Z             {
2026-06-21T03:31:34.7192050Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7192169Z               "line": 48
2026-06-21T03:31:34.7192266Z             },
2026-06-21T03:31:34.7192389Z             {
2026-06-21T03:31:34.7192513Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7192623Z               "line": 55
2026-06-21T03:31:34.7192718Z             },
2026-06-21T03:31:34.7192828Z             {
2026-06-21T03:31:34.7192962Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7193075Z               "line": 74
2026-06-21T03:31:34.7193181Z             },
2026-06-21T03:31:34.7193285Z             {
2026-06-21T03:31:34.7193414Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7193521Z               "line": 91
2026-06-21T03:31:34.7193629Z             }
2026-06-21T03:31:34.7193743Z           ]
2026-06-21T03:31:34.7193845Z         },
2026-06-21T03:31:34.7193953Z         "int": {
2026-06-21T03:31:34.7194058Z           "complete": false,
2026-06-21T03:31:34.7194169Z           "evidence": []
2026-06-21T03:31:34.7194268Z         },
2026-06-21T03:31:34.7194376Z         "unit": {
2026-06-21T03:31:34.7194501Z           "complete": true,
2026-06-21T03:31:34.7194613Z           "evidence": [
2026-06-21T03:31:34.7194717Z             {
2026-06-21T03:31:34.7194857Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7194975Z               "line": 149
2026-06-21T03:31:34.7195079Z             },
2026-06-21T03:31:34.7195186Z             {
2026-06-21T03:31:34.7195332Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7195424Z               "line": 166
2026-06-21T03:31:34.7195533Z             },
2026-06-21T03:31:34.7195638Z             {
2026-06-21T03:31:34.7195781Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7195905Z               "line": 176
2026-06-21T03:31:34.7196014Z             },
2026-06-21T03:31:34.7196125Z             {
2026-06-21T03:31:34.7196262Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7196373Z               "line": 194
2026-06-21T03:31:34.7196472Z             },
2026-06-21T03:31:34.7196582Z             {
2026-06-21T03:31:34.7196717Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7196834Z               "line": 207
2026-06-21T03:31:34.7196939Z             }
2026-06-21T03:31:34.7197041Z           ]
2026-06-21T03:31:34.7197149Z         }
2026-06-21T03:31:34.7197248Z       }
2026-06-21T03:31:34.7197354Z     },
2026-06-21T03:31:34.7197459Z     {
2026-06-21T03:31:34.7197606Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T03:31:34.7197816Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T03:31:34.7197920Z       "requiredStages": [
2026-06-21T03:31:34.7198017Z         "impl",
2026-06-21T03:31:34.7198131Z         "unit"
2026-06-21T03:31:34.7198240Z       ],
2026-06-21T03:31:34.7198346Z       "stages": {
2026-06-21T03:31:34.7201327Z         "doc": {
2026-06-21T03:31:34.7201480Z           "complete": false,
2026-06-21T03:31:34.7201580Z           "evidence": []
2026-06-21T03:31:34.7201684Z         },
2026-06-21T03:31:34.7201937Z         "impl": {
2026-06-21T03:31:34.7202047Z           "complete": true,
2026-06-21T03:31:34.7202153Z           "evidence": [
2026-06-21T03:31:34.7202261Z             {
2026-06-21T03:31:34.7202427Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7202527Z               "line": 466
2026-06-21T03:31:34.7202630Z             },
2026-06-21T03:31:34.7202715Z             {
2026-06-21T03:31:34.7202864Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7202963Z               "line": 26
2026-06-21T03:31:34.7203063Z             }
2026-06-21T03:31:34.7203169Z           ]
2026-06-21T03:31:34.7203264Z         },
2026-06-21T03:31:34.7203489Z         "int": {
2026-06-21T03:31:34.7203593Z           "complete": false,
2026-06-21T03:31:34.7203703Z           "evidence": []
2026-06-21T03:31:34.7203803Z         },
2026-06-21T03:31:34.7203903Z         "unit": {
2026-06-21T03:31:34.7204012Z           "complete": true,
2026-06-21T03:31:34.7204109Z           "evidence": [
2026-06-21T03:31:34.7204212Z             {
2026-06-21T03:31:34.7204357Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7204475Z               "line": 150
2026-06-21T03:31:34.7204580Z             },
2026-06-21T03:31:34.7204686Z             {
2026-06-21T03:31:34.7204837Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7204950Z               "line": 208
2026-06-21T03:31:34.7205056Z             }
2026-06-21T03:31:34.7205159Z           ]
2026-06-21T03:31:34.7205262Z         }
2026-06-21T03:31:34.7205364Z       }
2026-06-21T03:31:34.7205469Z     },
2026-06-21T03:31:34.7205573Z     {
2026-06-21T03:31:34.7205717Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T03:31:34.7214854Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T03:31:34.7215289Z       "requiredStages": [
2026-06-21T03:31:34.7215397Z         "impl",
2026-06-21T03:31:34.7215510Z         "unit",
2026-06-21T03:31:34.7215611Z         "int"
2026-06-21T03:31:34.7215733Z       ],
2026-06-21T03:31:34.7215837Z       "stages": {
2026-06-21T03:31:34.7215938Z         "doc": {
2026-06-21T03:31:34.7216066Z           "complete": false,
2026-06-21T03:31:34.7216181Z           "evidence": []
2026-06-21T03:31:34.7216286Z         },
2026-06-21T03:31:34.7216395Z         "impl": {
2026-06-21T03:31:34.7216505Z           "complete": true,
2026-06-21T03:31:34.7216610Z           "evidence": [
2026-06-21T03:31:34.7216720Z             {
2026-06-21T03:31:34.7216873Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7216982Z               "line": 99
2026-06-21T03:31:34.7217087Z             },
2026-06-21T03:31:34.7217183Z             {
2026-06-21T03:31:34.7217344Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7217444Z               "line": 201
2026-06-21T03:31:34.7217551Z             }
2026-06-21T03:31:34.7217654Z           ]
2026-06-21T03:31:34.7217759Z         },
2026-06-21T03:31:34.7217866Z         "int": {
2026-06-21T03:31:34.7217978Z           "complete": true,
2026-06-21T03:31:34.7218089Z           "evidence": [
2026-06-21T03:31:34.7218194Z             {
2026-06-21T03:31:34.7218363Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7218469Z               "line": 682
2026-06-21T03:31:34.7218570Z             }
2026-06-21T03:31:34.7218669Z           ]
2026-06-21T03:31:34.7218764Z         },
2026-06-21T03:31:34.7218865Z         "unit": {
2026-06-21T03:31:34.7219055Z           "complete": true,
2026-06-21T03:31:34.7219170Z           "evidence": [
2026-06-21T03:31:34.7219275Z             {
2026-06-21T03:31:34.7219428Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7219551Z               "line": 517
2026-06-21T03:31:34.7219646Z             },
2026-06-21T03:31:34.7219753Z             {
2026-06-21T03:31:34.7219885Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7219989Z               "line": 576
2026-06-21T03:31:34.7220091Z             }
2026-06-21T03:31:34.7220195Z           ]
2026-06-21T03:31:34.7220300Z         }
2026-06-21T03:31:34.7220401Z       }
2026-06-21T03:31:34.7220504Z     },
2026-06-21T03:31:34.7220604Z     {
2026-06-21T03:31:34.7220756Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T03:31:34.7222123Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T03:31:34.7222242Z       "requiredStages": [
2026-06-21T03:31:34.7222347Z         "doc",
2026-06-21T03:31:34.7222452Z         "impl",
2026-06-21T03:31:34.7222561Z         "unit"
2026-06-21T03:31:34.7222672Z       ],
2026-06-21T03:31:34.7222775Z       "stages": {
2026-06-21T03:31:34.7222996Z         "doc": {
2026-06-21T03:31:34.7223104Z           "complete": true,
2026-06-21T03:31:34.7223215Z           "evidence": [
2026-06-21T03:31:34.7223316Z             {
2026-06-21T03:31:34.7223471Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7223571Z               "line": 214
2026-06-21T03:31:34.7223675Z             }
2026-06-21T03:31:34.7223778Z           ]
2026-06-21T03:31:34.7223869Z         },
2026-06-21T03:31:34.7223975Z         "impl": {
2026-06-21T03:31:34.7224088Z           "complete": true,
2026-06-21T03:31:34.7224198Z           "evidence": [
2026-06-21T03:31:34.7224304Z             {
2026-06-21T03:31:34.7224446Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7224656Z               "line": 56
2026-06-21T03:31:34.7224765Z             },
2026-06-21T03:31:34.7224871Z             {
2026-06-21T03:31:34.7225004Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7225119Z               "line": 580
2026-06-21T03:31:34.7225234Z             },
2026-06-21T03:31:34.7225332Z             {
2026-06-21T03:31:34.7225482Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7225587Z               "line": 36
2026-06-21T03:31:34.7225691Z             },
2026-06-21T03:31:34.7225787Z             {
2026-06-21T03:31:34.7225934Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7226043Z               "line": 59
2026-06-21T03:31:34.7226147Z             },
2026-06-21T03:31:34.7226251Z             {
2026-06-21T03:31:34.7226393Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7226508Z               "line": 83
2026-06-21T03:31:34.7226617Z             },
2026-06-21T03:31:34.7226712Z             {
2026-06-21T03:31:34.7226856Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7226965Z               "line": 140
2026-06-21T03:31:34.7227065Z             },
2026-06-21T03:31:34.7227166Z             {
2026-06-21T03:31:34.7227318Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7227438Z               "line": 159
2026-06-21T03:31:34.7227547Z             },
2026-06-21T03:31:34.7227647Z             {
2026-06-21T03:31:34.7227792Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7227905Z               "line": 384
2026-06-21T03:31:34.7228005Z             },
2026-06-21T03:31:34.7228106Z             {
2026-06-21T03:31:34.7228257Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7228364Z               "line": 535
2026-06-21T03:31:34.7228468Z             },
2026-06-21T03:31:34.7228567Z             {
2026-06-21T03:31:34.7228707Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7228815Z               "line": 581
2026-06-21T03:31:34.7228919Z             },
2026-06-21T03:31:34.7229096Z             {
2026-06-21T03:31:34.7229219Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7229334Z               "line": 300
2026-06-21T03:31:34.7229459Z             },
2026-06-21T03:31:34.7229558Z             {
2026-06-21T03:31:34.7229688Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:31:34.7229802Z               "line": 42
2026-06-21T03:31:34.7229911Z             }
2026-06-21T03:31:34.7230012Z           ]
2026-06-21T03:31:34.7230111Z         },
2026-06-21T03:31:34.7230216Z         "int": {
2026-06-21T03:31:34.7230341Z           "complete": false,
2026-06-21T03:31:34.7230445Z           "evidence": []
2026-06-21T03:31:34.7230550Z         },
2026-06-21T03:31:34.7230656Z         "unit": {
2026-06-21T03:31:34.7230769Z           "complete": true,
2026-06-21T03:31:34.7230874Z           "evidence": [
2026-06-21T03:31:34.7230971Z             {
2026-06-21T03:31:34.7231117Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7231226Z               "line": 813
2026-06-21T03:31:34.7231331Z             },
2026-06-21T03:31:34.7231434Z             {
2026-06-21T03:31:34.7231577Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7231896Z               "line": 854
2026-06-21T03:31:34.7231997Z             },
2026-06-21T03:31:34.7232101Z             {
2026-06-21T03:31:34.7232245Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7232345Z               "line": 928
2026-06-21T03:31:34.7232444Z             }
2026-06-21T03:31:34.7232546Z           ]
2026-06-21T03:31:34.7232645Z         }
2026-06-21T03:31:34.7232745Z       }
2026-06-21T03:31:34.7232845Z     },
2026-06-21T03:31:34.7232941Z     {
2026-06-21T03:31:34.7233097Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T03:31:34.7238051Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T03:31:34.7238332Z       "requiredStages": [
2026-06-21T03:31:34.7238436Z         "impl",
2026-06-21T03:31:34.7238541Z         "unit",
2026-06-21T03:31:34.7238647Z         "int"
2026-06-21T03:31:34.7238741Z       ],
2026-06-21T03:31:34.7238846Z       "stages": {
2026-06-21T03:31:34.7239019Z         "doc": {
2026-06-21T03:31:34.7239146Z           "complete": false,
2026-06-21T03:31:34.7239253Z           "evidence": []
2026-06-21T03:31:34.7239348Z         },
2026-06-21T03:31:34.7239456Z         "impl": {
2026-06-21T03:31:34.7239556Z           "complete": true,
2026-06-21T03:31:34.7239671Z           "evidence": [
2026-06-21T03:31:34.7239765Z             {
2026-06-21T03:31:34.7239913Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7240029Z               "line": 106
2026-06-21T03:31:34.7240128Z             }
2026-06-21T03:31:34.7240234Z           ]
2026-06-21T03:31:34.7240328Z         },
2026-06-21T03:31:34.7240428Z         "int": {
2026-06-21T03:31:34.7240538Z           "complete": true,
2026-06-21T03:31:34.7240653Z           "evidence": [
2026-06-21T03:31:34.7240757Z             {
2026-06-21T03:31:34.7240920Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T03:31:34.7241025Z               "line": 296
2026-06-21T03:31:34.7241124Z             }
2026-06-21T03:31:34.7241231Z           ]
2026-06-21T03:31:34.7241339Z         },
2026-06-21T03:31:34.7241444Z         "unit": {
2026-06-21T03:31:34.7241559Z           "complete": true,
2026-06-21T03:31:34.7241668Z           "evidence": [
2026-06-21T03:31:34.7241771Z             {
2026-06-21T03:31:34.7241919Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7242146Z               "line": 464
2026-06-21T03:31:34.7242247Z             }
2026-06-21T03:31:34.7242351Z           ]
2026-06-21T03:31:34.7242456Z         }
2026-06-21T03:31:34.7242557Z       }
2026-06-21T03:31:34.7242656Z     },
2026-06-21T03:31:34.7242757Z     {
2026-06-21T03:31:34.7242886Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T03:31:34.7246263Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T03:31:34.7246520Z       "requiredStages": [
2026-06-21T03:31:34.7246617Z         "impl",
2026-06-21T03:31:34.7246721Z         "unit",
2026-06-21T03:31:34.7246830Z         "int"
2026-06-21T03:31:34.7246936Z       ],
2026-06-21T03:31:34.7247036Z       "stages": {
2026-06-21T03:31:34.7247139Z         "doc": {
2026-06-21T03:31:34.7247258Z           "complete": false,
2026-06-21T03:31:34.7247353Z           "evidence": []
2026-06-21T03:31:34.7247461Z         },
2026-06-21T03:31:34.7247561Z         "impl": {
2026-06-21T03:31:34.7247696Z           "complete": true,
2026-06-21T03:31:34.7247799Z           "evidence": [
2026-06-21T03:31:34.7247910Z             {
2026-06-21T03:31:34.7248062Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7248176Z               "line": 123
2026-06-21T03:31:34.7248282Z             },
2026-06-21T03:31:34.7248382Z             {
2026-06-21T03:31:34.7248525Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.7248630Z               "line": 134
2026-06-21T03:31:34.7248734Z             }
2026-06-21T03:31:34.7248839Z           ]
2026-06-21T03:31:34.7249035Z         },
2026-06-21T03:31:34.7249144Z         "int": {
2026-06-21T03:31:34.7249259Z           "complete": true,
2026-06-21T03:31:34.7249378Z           "evidence": [
2026-06-21T03:31:34.7249484Z             {
2026-06-21T03:31:34.7249649Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7249755Z               "line": 312
2026-06-21T03:31:34.7249861Z             },
2026-06-21T03:31:34.7249964Z             {
2026-06-21T03:31:34.7250106Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7250216Z               "line": 508
2026-06-21T03:31:34.7250316Z             }
2026-06-21T03:31:34.7250420Z           ]
2026-06-21T03:31:34.7250527Z         },
2026-06-21T03:31:34.7250626Z         "unit": {
2026-06-21T03:31:34.7250740Z           "complete": true,
2026-06-21T03:31:34.7250846Z           "evidence": [
2026-06-21T03:31:34.7250946Z             {
2026-06-21T03:31:34.7251094Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7251203Z               "line": 250
2026-06-21T03:31:34.7251312Z             }
2026-06-21T03:31:34.7251409Z           ]
2026-06-21T03:31:34.7251518Z         }
2026-06-21T03:31:34.7251622Z       }
2026-06-21T03:31:34.7251729Z     },
2026-06-21T03:31:34.7251824Z     {
2026-06-21T03:31:34.7251970Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T03:31:34.7253727Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T03:31:34.7253970Z       "requiredStages": [
2026-06-21T03:31:34.7254075Z         "impl",
2026-06-21T03:31:34.7254281Z         "unit"
2026-06-21T03:31:34.7254385Z       ],
2026-06-21T03:31:34.7254490Z       "stages": {
2026-06-21T03:31:34.7254596Z         "doc": {
2026-06-21T03:31:34.7254719Z           "complete": false,
2026-06-21T03:31:34.7254828Z           "evidence": []
2026-06-21T03:31:34.7254934Z         },
2026-06-21T03:31:34.7255043Z         "impl": {
2026-06-21T03:31:34.7255156Z           "complete": true,
2026-06-21T03:31:34.7255256Z           "evidence": [
2026-06-21T03:31:34.7255360Z             {
2026-06-21T03:31:34.7255511Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7255617Z               "line": 31
2026-06-21T03:31:34.7255722Z             }
2026-06-21T03:31:34.7255816Z           ]
2026-06-21T03:31:34.7255923Z         },
2026-06-21T03:31:34.7256032Z         "int": {
2026-06-21T03:31:34.7256140Z           "complete": false,
2026-06-21T03:31:34.7256256Z           "evidence": []
2026-06-21T03:31:34.7256351Z         },
2026-06-21T03:31:34.7256469Z         "unit": {
2026-06-21T03:31:34.7256580Z           "complete": true,
2026-06-21T03:31:34.7256689Z           "evidence": [
2026-06-21T03:31:34.7256799Z             {
2026-06-21T03:31:34.7256938Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7257042Z               "line": 181
2026-06-21T03:31:34.7257152Z             }
2026-06-21T03:31:34.7257248Z           ]
2026-06-21T03:31:34.7257352Z         }
2026-06-21T03:31:34.7257448Z       }
2026-06-21T03:31:34.7257553Z     },
2026-06-21T03:31:34.7257652Z     {
2026-06-21T03:31:34.7257799Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T03:31:34.7257974Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T03:31:34.7258097Z       "requiredStages": [
2026-06-21T03:31:34.7258198Z         "impl",
2026-06-21T03:31:34.7258307Z         "unit"
2026-06-21T03:31:34.7258417Z       ],
2026-06-21T03:31:34.7258518Z       "stages": {
2026-06-21T03:31:34.7258622Z         "doc": {
2026-06-21T03:31:34.7258741Z           "complete": false,
2026-06-21T03:31:34.7258846Z           "evidence": []
2026-06-21T03:31:34.7259031Z         },
2026-06-21T03:31:34.7259137Z         "impl": {
2026-06-21T03:31:34.7259251Z           "complete": true,
2026-06-21T03:31:34.7259356Z           "evidence": [
2026-06-21T03:31:34.7259476Z             {
2026-06-21T03:31:34.7259628Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7259729Z               "line": 49
2026-06-21T03:31:34.7259833Z             },
2026-06-21T03:31:34.7259938Z             {
2026-06-21T03:31:34.7260082Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7260186Z               "line": 81
2026-06-21T03:31:34.7260290Z             }
2026-06-21T03:31:34.7260397Z           ]
2026-06-21T03:31:34.7260501Z         },
2026-06-21T03:31:34.7260604Z         "int": {
2026-06-21T03:31:34.7260719Z           "complete": false,
2026-06-21T03:31:34.7260834Z           "evidence": []
2026-06-21T03:31:34.7260938Z         },
2026-06-21T03:31:34.7261053Z         "unit": {
2026-06-21T03:31:34.7261154Z           "complete": true,
2026-06-21T03:31:34.7261267Z           "evidence": [
2026-06-21T03:31:34.7261368Z             {
2026-06-21T03:31:34.7261511Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7261620Z               "line": 156
2026-06-21T03:31:34.7261831Z             },
2026-06-21T03:31:34.7261930Z             {
2026-06-21T03:31:34.7262069Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7262183Z               "line": 173
2026-06-21T03:31:34.7262289Z             },
2026-06-21T03:31:34.7262398Z             {
2026-06-21T03:31:34.7262545Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7262642Z               "line": 196
2026-06-21T03:31:34.7262745Z             }
2026-06-21T03:31:34.7262845Z           ]
2026-06-21T03:31:34.7262954Z         }
2026-06-21T03:31:34.7263063Z       }
2026-06-21T03:31:34.7263157Z     },
2026-06-21T03:31:34.7263257Z     {
2026-06-21T03:31:34.7263495Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T03:31:34.7263696Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T03:31:34.7263810Z       "requiredStages": [
2026-06-21T03:31:34.7263921Z         "impl",
2026-06-21T03:31:34.7264030Z         "unit"
2026-06-21T03:31:34.7264139Z       ],
2026-06-21T03:31:34.7264250Z       "stages": {
2026-06-21T03:31:34.7264359Z         "doc": {
2026-06-21T03:31:34.7264473Z           "complete": false,
2026-06-21T03:31:34.7264579Z           "evidence": []
2026-06-21T03:31:34.7264688Z         },
2026-06-21T03:31:34.7264792Z         "impl": {
2026-06-21T03:31:34.7264903Z           "complete": true,
2026-06-21T03:31:34.7265002Z           "evidence": [
2026-06-21T03:31:34.7265107Z             {
2026-06-21T03:31:34.7265251Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7265365Z               "line": 120
2026-06-21T03:31:34.7265466Z             }
2026-06-21T03:31:34.7265575Z           ]
2026-06-21T03:31:34.7265683Z         },
2026-06-21T03:31:34.7265788Z         "int": {
2026-06-21T03:31:34.7265906Z           "complete": false,
2026-06-21T03:31:34.7266019Z           "evidence": []
2026-06-21T03:31:34.7266124Z         },
2026-06-21T03:31:34.7266230Z         "unit": {
2026-06-21T03:31:34.7266334Z           "complete": true,
2026-06-21T03:31:34.7266458Z           "evidence": [
2026-06-21T03:31:34.7266563Z             {
2026-06-21T03:31:34.7266696Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7266807Z               "line": 212
2026-06-21T03:31:34.7266902Z             },
2026-06-21T03:31:34.7267011Z             {
2026-06-21T03:31:34.7267155Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7267254Z               "line": 221
2026-06-21T03:31:34.7267359Z             },
2026-06-21T03:31:34.7267465Z             {
2026-06-21T03:31:34.7267612Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7267722Z               "line": 229
2026-06-21T03:31:34.7267832Z             },
2026-06-21T03:31:34.7267941Z             {
2026-06-21T03:31:34.7268086Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7268193Z               "line": 239
2026-06-21T03:31:34.7268297Z             },
2026-06-21T03:31:34.7268403Z             {
2026-06-21T03:31:34.7268543Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:31:34.7268647Z               "line": 249
2026-06-21T03:31:34.7268753Z             }
2026-06-21T03:31:34.7268858Z           ]
2026-06-21T03:31:34.7269045Z         }
2026-06-21T03:31:34.7269144Z       }
2026-06-21T03:31:34.7269244Z     },
2026-06-21T03:31:34.7269335Z     {
2026-06-21T03:31:34.7269483Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T03:31:34.7269674Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T03:31:34.7269778Z       "requiredStages": [
2026-06-21T03:31:34.7269883Z         "impl",
2026-06-21T03:31:34.7269979Z         "unit"
2026-06-21T03:31:34.7270088Z       ],
2026-06-21T03:31:34.7270193Z       "stages": {
2026-06-21T03:31:34.7270294Z         "doc": {
2026-06-21T03:31:34.7270422Z           "complete": false,
2026-06-21T03:31:34.7270527Z           "evidence": []
2026-06-21T03:31:34.7270628Z         },
2026-06-21T03:31:34.7270732Z         "impl": {
2026-06-21T03:31:34.7270953Z           "complete": true,
2026-06-21T03:31:34.7271051Z           "evidence": [
2026-06-21T03:31:34.7271155Z             {
2026-06-21T03:31:34.7271293Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7271390Z               "line": 14
2026-06-21T03:31:34.7271493Z             },
2026-06-21T03:31:34.7271599Z             {
2026-06-21T03:31:34.7271723Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7271836Z               "line": 63
2026-06-21T03:31:34.7271938Z             }
2026-06-21T03:31:34.7272033Z           ]
2026-06-21T03:31:34.7272132Z         },
2026-06-21T03:31:34.7272238Z         "int": {
2026-06-21T03:31:34.7272447Z           "complete": false,
2026-06-21T03:31:34.7272558Z           "evidence": []
2026-06-21T03:31:34.7272662Z         },
2026-06-21T03:31:34.7272771Z         "unit": {
2026-06-21T03:31:34.7272892Z           "complete": true,
2026-06-21T03:31:34.7273000Z           "evidence": [
2026-06-21T03:31:34.7273105Z             {
2026-06-21T03:31:34.7273245Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7273357Z               "line": 164
2026-06-21T03:31:34.7273461Z             },
2026-06-21T03:31:34.7273562Z             {
2026-06-21T03:31:34.7273707Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7273813Z               "line": 198
2026-06-21T03:31:34.7273923Z             },
2026-06-21T03:31:34.7274017Z             {
2026-06-21T03:31:34.7274156Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.7274256Z               "line": 220
2026-06-21T03:31:34.7274360Z             }
2026-06-21T03:31:34.7274466Z           ]
2026-06-21T03:31:34.7274580Z         }
2026-06-21T03:31:34.7274684Z       }
2026-06-21T03:31:34.7274786Z     },
2026-06-21T03:31:34.7274885Z     {
2026-06-21T03:31:34.7275013Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T03:31:34.7276386Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T03:31:34.7276513Z       "requiredStages": [],
2026-06-21T03:31:34.7276617Z       "stages": {
2026-06-21T03:31:34.7276727Z         "doc": {
2026-06-21T03:31:34.7276842Z           "complete": true,
2026-06-21T03:31:34.7276951Z           "evidence": [
2026-06-21T03:31:34.7277057Z             {
2026-06-21T03:31:34.7277190Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7277309Z               "line": 165
2026-06-21T03:31:34.7277405Z             }
2026-06-21T03:31:34.7277509Z           ]
2026-06-21T03:31:34.7277609Z         },
2026-06-21T03:31:34.7277715Z         "impl": {
2026-06-21T03:31:34.7277833Z           "complete": false,
2026-06-21T03:31:34.7277953Z           "evidence": []
2026-06-21T03:31:34.7278058Z         },
2026-06-21T03:31:34.7278162Z         "int": {
2026-06-21T03:31:34.7278283Z           "complete": false,
2026-06-21T03:31:34.7278387Z           "evidence": []
2026-06-21T03:31:34.7278491Z         },
2026-06-21T03:31:34.7278602Z         "unit": {
2026-06-21T03:31:34.7278711Z           "complete": false,
2026-06-21T03:31:34.7278829Z           "evidence": []
2026-06-21T03:31:34.7278924Z         }
2026-06-21T03:31:34.7279113Z       }
2026-06-21T03:31:34.7279212Z     },
2026-06-21T03:31:34.7279313Z     {
2026-06-21T03:31:34.7279451Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T03:31:34.7279700Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T03:31:34.7279827Z       "requiredStages": [
2026-06-21T03:31:34.7279934Z         "impl",
2026-06-21T03:31:34.7280043Z         "unit"
2026-06-21T03:31:34.7280147Z       ],
2026-06-21T03:31:34.7280249Z       "stages": {
2026-06-21T03:31:34.7280486Z         "doc": {
2026-06-21T03:31:34.7280596Z           "complete": false,
2026-06-21T03:31:34.7280710Z           "evidence": []
2026-06-21T03:31:34.7280810Z         },
2026-06-21T03:31:34.7280921Z         "impl": {
2026-06-21T03:31:34.7281025Z           "complete": true,
2026-06-21T03:31:34.7281135Z           "evidence": [
2026-06-21T03:31:34.7281240Z             {
2026-06-21T03:31:34.7281392Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7281503Z               "line": 76
2026-06-21T03:31:34.7281602Z             },
2026-06-21T03:31:34.7281706Z             {
2026-06-21T03:31:34.7281840Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7282048Z               "line": 167
2026-06-21T03:31:34.7282154Z             },
2026-06-21T03:31:34.7282259Z             {
2026-06-21T03:31:34.7282401Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7282512Z               "line": 233
2026-06-21T03:31:34.7282612Z             },
2026-06-21T03:31:34.7282721Z             {
2026-06-21T03:31:34.7282860Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7282974Z               "line": 272
2026-06-21T03:31:34.7283070Z             }
2026-06-21T03:31:34.7283170Z           ]
2026-06-21T03:31:34.7283270Z         },
2026-06-21T03:31:34.7283380Z         "int": {
2026-06-21T03:31:34.7283490Z           "complete": false,
2026-06-21T03:31:34.7283598Z           "evidence": []
2026-06-21T03:31:34.7283690Z         },
2026-06-21T03:31:34.7283795Z         "unit": {
2026-06-21T03:31:34.7283903Z           "complete": true,
2026-06-21T03:31:34.7284008Z           "evidence": [
2026-06-21T03:31:34.7284117Z             {
2026-06-21T03:31:34.7284263Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7284378Z               "line": 321
2026-06-21T03:31:34.7284488Z             },
2026-06-21T03:31:34.7284591Z             {
2026-06-21T03:31:34.7284735Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7284850Z               "line": 329
2026-06-21T03:31:34.7284954Z             },
2026-06-21T03:31:34.7285060Z             {
2026-06-21T03:31:34.7285193Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7285302Z               "line": 356
2026-06-21T03:31:34.7285403Z             },
2026-06-21T03:31:34.7285512Z             {
2026-06-21T03:31:34.7285646Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7285746Z               "line": 395
2026-06-21T03:31:34.7285856Z             },
2026-06-21T03:31:34.7285961Z             {
2026-06-21T03:31:34.7286094Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7286203Z               "line": 406
2026-06-21T03:31:34.7286314Z             },
2026-06-21T03:31:34.7286418Z             {
2026-06-21T03:31:34.7286562Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7286682Z               "line": 418
2026-06-21T03:31:34.7286784Z             },
2026-06-21T03:31:34.7286893Z             {
2026-06-21T03:31:34.7287036Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:31:34.7287144Z               "line": 442
2026-06-21T03:31:34.7287254Z             }
2026-06-21T03:31:34.7287364Z           ]
2026-06-21T03:31:34.7287473Z         }
2026-06-21T03:31:34.7287569Z       }
2026-06-21T03:31:34.7287674Z     },
2026-06-21T03:31:34.7287769Z     {
2026-06-21T03:31:34.7287898Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T03:31:34.7288074Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T03:31:34.7288189Z       "requiredStages": [
2026-06-21T03:31:34.7288294Z         "impl",
2026-06-21T03:31:34.7288394Z         "int"
2026-06-21T03:31:34.7288503Z       ],
2026-06-21T03:31:34.7288609Z       "stages": {
2026-06-21T03:31:34.7288723Z         "doc": {
2026-06-21T03:31:34.7288833Z           "complete": false,
2026-06-21T03:31:34.7289022Z           "evidence": []
2026-06-21T03:31:34.7289128Z         },
2026-06-21T03:31:34.7289230Z         "impl": {
2026-06-21T03:31:34.7289485Z           "complete": true,
2026-06-21T03:31:34.7289593Z           "evidence": [
2026-06-21T03:31:34.7289697Z             {
2026-06-21T03:31:34.7289840Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7289945Z               "line": 22
2026-06-21T03:31:34.7290049Z             }
2026-06-21T03:31:34.7290140Z           ]
2026-06-21T03:31:34.7290245Z         },
2026-06-21T03:31:34.7290350Z         "int": {
2026-06-21T03:31:34.7290465Z           "complete": true,
2026-06-21T03:31:34.7290565Z           "evidence": [
2026-06-21T03:31:34.7290664Z             {
2026-06-21T03:31:34.7290823Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T03:31:34.7291022Z               "line": 18
2026-06-21T03:31:34.7291129Z             }
2026-06-21T03:31:34.7291232Z           ]
2026-06-21T03:31:34.7291337Z         },
2026-06-21T03:31:34.7291438Z         "unit": {
2026-06-21T03:31:34.7291556Z           "complete": false,
2026-06-21T03:31:34.7291666Z           "evidence": []
2026-06-21T03:31:34.7291777Z         }
2026-06-21T03:31:34.7291885Z       }
2026-06-21T03:31:34.7291976Z     },
2026-06-21T03:31:34.7292073Z     {
2026-06-21T03:31:34.7292213Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T03:31:34.7292433Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T03:31:34.7292552Z       "requiredStages": [
2026-06-21T03:31:34.7292661Z         "impl",
2026-06-21T03:31:34.7292767Z         "unit"
2026-06-21T03:31:34.7292862Z       ],
2026-06-21T03:31:34.7292971Z       "stages": {
2026-06-21T03:31:34.7293072Z         "doc": {
2026-06-21T03:31:34.7293186Z           "complete": false,
2026-06-21T03:31:34.7293310Z           "evidence": []
2026-06-21T03:31:34.7293420Z         },
2026-06-21T03:31:34.7293529Z         "impl": {
2026-06-21T03:31:34.7293630Z           "complete": true,
2026-06-21T03:31:34.7293740Z           "evidence": [
2026-06-21T03:31:34.7293840Z             {
2026-06-21T03:31:34.7293993Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7294102Z               "line": 465
2026-06-21T03:31:34.7294207Z             },
2026-06-21T03:31:34.7294313Z             {
2026-06-21T03:31:34.7294459Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7294563Z               "line": 27
2026-06-21T03:31:34.7294663Z             }
2026-06-21T03:31:34.7294771Z           ]
2026-06-21T03:31:34.7294865Z         },
2026-06-21T03:31:34.7294966Z         "int": {
2026-06-21T03:31:34.7295081Z           "complete": false,
2026-06-21T03:31:34.7295180Z           "evidence": []
2026-06-21T03:31:34.7295291Z         },
2026-06-21T03:31:34.7295391Z         "unit": {
2026-06-21T03:31:34.7295519Z           "complete": true,
2026-06-21T03:31:34.7295625Z           "evidence": [
2026-06-21T03:31:34.7295729Z             {
2026-06-21T03:31:34.7295882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7295992Z               "line": 990
2026-06-21T03:31:34.7296106Z             },
2026-06-21T03:31:34.7296211Z             {
2026-06-21T03:31:34.7296354Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7296468Z               "line": 181
2026-06-21T03:31:34.7296569Z             }
2026-06-21T03:31:34.7296678Z           ]
2026-06-21T03:31:34.7296777Z         }
2026-06-21T03:31:34.7296879Z       }
2026-06-21T03:31:34.7296974Z     },
2026-06-21T03:31:34.7297065Z     {
2026-06-21T03:31:34.7297203Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T03:31:34.7297387Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T03:31:34.7297512Z       "requiredStages": [
2026-06-21T03:31:34.7297615Z         "impl",
2026-06-21T03:31:34.7297723Z         "unit"
2026-06-21T03:31:34.7297824Z       ],
2026-06-21T03:31:34.7297939Z       "stages": {
2026-06-21T03:31:34.7298042Z         "doc": {
2026-06-21T03:31:34.7298148Z           "complete": false,
2026-06-21T03:31:34.7301134Z           "evidence": []
2026-06-21T03:31:34.7301272Z         },
2026-06-21T03:31:34.7301525Z         "impl": {
2026-06-21T03:31:34.7301645Z           "complete": true,
2026-06-21T03:31:34.7301754Z           "evidence": [
2026-06-21T03:31:34.7301863Z             {
2026-06-21T03:31:34.7302018Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.7302130Z               "line": 73
2026-06-21T03:31:34.7302231Z             },
2026-06-21T03:31:34.7302337Z             {
2026-06-21T03:31:34.7302488Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.7302595Z               "line": 972
2026-06-21T03:31:34.7302699Z             },
2026-06-21T03:31:34.7302793Z             {
2026-06-21T03:31:34.7302945Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7303145Z               "line": 20
2026-06-21T03:31:34.7303246Z             },
2026-06-21T03:31:34.7303351Z             {
2026-06-21T03:31:34.7303493Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7303604Z               "line": 100
2026-06-21T03:31:34.7303718Z             },
2026-06-21T03:31:34.7303822Z             {
2026-06-21T03:31:34.7303957Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.7304066Z               "line": 603
2026-06-21T03:31:34.7304165Z             },
2026-06-21T03:31:34.7304262Z             {
2026-06-21T03:31:34.7304409Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:31:34.7304515Z               "line": 68
2026-06-21T03:31:34.7304619Z             },
2026-06-21T03:31:34.7304723Z             {
2026-06-21T03:31:34.7304873Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:31:34.7304971Z               "line": 80
2026-06-21T03:31:34.7305080Z             }
2026-06-21T03:31:34.7305190Z           ]
2026-06-21T03:31:34.7305294Z         },
2026-06-21T03:31:34.7305402Z         "int": {
2026-06-21T03:31:34.7305507Z           "complete": true,
2026-06-21T03:31:34.7305613Z           "evidence": [
2026-06-21T03:31:34.7305717Z             {
2026-06-21T03:31:34.7305860Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T03:31:34.7305974Z               "line": 44
2026-06-21T03:31:34.7306079Z             }
2026-06-21T03:31:34.7306180Z           ]
2026-06-21T03:31:34.7306275Z         },
2026-06-21T03:31:34.7306374Z         "unit": {
2026-06-21T03:31:34.7306490Z           "complete": true,
2026-06-21T03:31:34.7306604Z           "evidence": [
2026-06-21T03:31:34.7306713Z             {
2026-06-21T03:31:34.7306857Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.7306971Z               "line": 1181
2026-06-21T03:31:34.7307072Z             },
2026-06-21T03:31:34.7307172Z             {
2026-06-21T03:31:34.7307324Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.7307435Z               "line": 1197
2026-06-21T03:31:34.7307543Z             },
2026-06-21T03:31:34.7307648Z             {
2026-06-21T03:31:34.7307792Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7307901Z               "line": 2246
2026-06-21T03:31:34.7308009Z             },
2026-06-21T03:31:34.7308114Z             {
2026-06-21T03:31:34.7308260Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7308370Z               "line": 152
2026-06-21T03:31:34.7308470Z             },
2026-06-21T03:31:34.7308579Z             {
2026-06-21T03:31:34.7308713Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7308818Z               "line": 175
2026-06-21T03:31:34.7308922Z             },
2026-06-21T03:31:34.7309109Z             {
2026-06-21T03:31:34.7309246Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7309357Z               "line": 186
2026-06-21T03:31:34.7309480Z             },
2026-06-21T03:31:34.7309585Z             {
2026-06-21T03:31:34.7309724Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7309833Z               "line": 202
2026-06-21T03:31:34.7309934Z             },
2026-06-21T03:31:34.7310039Z             {
2026-06-21T03:31:34.7310263Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:31:34.7310378Z               "line": 216
2026-06-21T03:31:34.7310476Z             },
2026-06-21T03:31:34.7310580Z             {
2026-06-21T03:31:34.7310728Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:31:34.7310836Z               "line": 137
2026-06-21T03:31:34.7310937Z             },
2026-06-21T03:31:34.7311037Z             {
2026-06-21T03:31:34.7311165Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7311266Z               "line": 8152
2026-06-21T03:31:34.7311370Z             },
2026-06-21T03:31:34.7311474Z             {
2026-06-21T03:31:34.7311719Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T03:31:34.7311827Z               "line": 30
2026-06-21T03:31:34.7311929Z             },
2026-06-21T03:31:34.7312037Z             {
2026-06-21T03:31:34.7312171Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T03:31:34.7312291Z               "line": 73
2026-06-21T03:31:34.7312400Z             }
2026-06-21T03:31:34.7312500Z           ]
2026-06-21T03:31:34.7312606Z         }
2026-06-21T03:31:34.7312695Z       }
2026-06-21T03:31:34.7312786Z     },
2026-06-21T03:31:34.7312888Z     {
2026-06-21T03:31:34.7313034Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T03:31:34.7317150Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T03:31:34.7317322Z       "requiredStages": [
2026-06-21T03:31:34.7317426Z         "impl",
2026-06-21T03:31:34.7317526Z         "unit",
2026-06-21T03:31:34.7317637Z         "int"
2026-06-21T03:31:34.7317737Z       ],
2026-06-21T03:31:34.7317846Z       "stages": {
2026-06-21T03:31:34.7317947Z         "doc": {
2026-06-21T03:31:34.7318075Z           "complete": false,
2026-06-21T03:31:34.7318180Z           "evidence": []
2026-06-21T03:31:34.7318285Z         },
2026-06-21T03:31:34.7318385Z         "impl": {
2026-06-21T03:31:34.7318494Z           "complete": true,
2026-06-21T03:31:34.7318603Z           "evidence": [
2026-06-21T03:31:34.7318702Z             {
2026-06-21T03:31:34.7318848Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7319035Z               "line": 510
2026-06-21T03:31:34.7319144Z             },
2026-06-21T03:31:34.7319244Z             {
2026-06-21T03:31:34.7319393Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7319520Z               "line": 704
2026-06-21T03:31:34.7319622Z             }
2026-06-21T03:31:34.7319727Z           ]
2026-06-21T03:31:34.7319830Z         },
2026-06-21T03:31:34.7319936Z         "int": {
2026-06-21T03:31:34.7320050Z           "complete": true,
2026-06-21T03:31:34.7320160Z           "evidence": [
2026-06-21T03:31:34.7320266Z             {
2026-06-21T03:31:34.7320523Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7320633Z               "line": 1119
2026-06-21T03:31:34.7320742Z             },
2026-06-21T03:31:34.7320833Z             {
2026-06-21T03:31:34.7320985Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T03:31:34.7321093Z               "line": 312
2026-06-21T03:31:34.7321198Z             }
2026-06-21T03:31:34.7321307Z           ]
2026-06-21T03:31:34.7321410Z         },
2026-06-21T03:31:34.7321506Z         "unit": {
2026-06-21T03:31:34.7321612Z           "complete": true,
2026-06-21T03:31:34.7321720Z           "evidence": [
2026-06-21T03:31:34.7321921Z             {
2026-06-21T03:31:34.7322068Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7322169Z               "line": 821
2026-06-21T03:31:34.7322274Z             }
2026-06-21T03:31:34.7322383Z           ]
2026-06-21T03:31:34.7322479Z         }
2026-06-21T03:31:34.7322588Z       }
2026-06-21T03:31:34.7322693Z     },
2026-06-21T03:31:34.7322799Z     {
2026-06-21T03:31:34.7322927Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T03:31:34.7323208Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T03:31:34.7323327Z       "requiredStages": [
2026-06-21T03:31:34.7323433Z         "impl",
2026-06-21T03:31:34.7323542Z         "unit"
2026-06-21T03:31:34.7323642Z       ],
2026-06-21T03:31:34.7323748Z       "stages": {
2026-06-21T03:31:34.7323857Z         "doc": {
2026-06-21T03:31:34.7323961Z           "complete": true,
2026-06-21T03:31:34.7324080Z           "evidence": [
2026-06-21T03:31:34.7324186Z             {
2026-06-21T03:31:34.7324332Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7324434Z               "line": 133
2026-06-21T03:31:34.7324538Z             }
2026-06-21T03:31:34.7324647Z           ]
2026-06-21T03:31:34.7324744Z         },
2026-06-21T03:31:34.7324848Z         "impl": {
2026-06-21T03:31:34.7324957Z           "complete": true,
2026-06-21T03:31:34.7325077Z           "evidence": [
2026-06-21T03:31:34.7325177Z             {
2026-06-21T03:31:34.7325320Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.7325416Z               "line": 65
2026-06-21T03:31:34.7325520Z             },
2026-06-21T03:31:34.7325615Z             {
2026-06-21T03:31:34.7325745Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7325858Z               "line": 17
2026-06-21T03:31:34.7325959Z             },
2026-06-21T03:31:34.7326069Z             {
2026-06-21T03:31:34.7326219Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.7326329Z               "line": 146
2026-06-21T03:31:34.7326442Z             },
2026-06-21T03:31:34.7326546Z             {
2026-06-21T03:31:34.7326690Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7326794Z               "line": 310
2026-06-21T03:31:34.7326904Z             },
2026-06-21T03:31:34.7327009Z             {
2026-06-21T03:31:34.7327147Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7327248Z               "line": 441
2026-06-21T03:31:34.7327352Z             },
2026-06-21T03:31:34.7327457Z             {
2026-06-21T03:31:34.7327582Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7327691Z               "line": 32
2026-06-21T03:31:34.7327800Z             },
2026-06-21T03:31:34.7327901Z             {
2026-06-21T03:31:34.7328029Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7328129Z               "line": 1283
2026-06-21T03:31:34.7328236Z             },
2026-06-21T03:31:34.7328339Z             {
2026-06-21T03:31:34.7328468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7328579Z               "line": 6161
2026-06-21T03:31:34.7328682Z             },
2026-06-21T03:31:34.7328788Z             {
2026-06-21T03:31:34.7328913Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7329115Z               "line": 6443
2026-06-21T03:31:34.7329323Z             }
2026-06-21T03:31:34.7329461Z           ]
2026-06-21T03:31:34.7329562Z         },
2026-06-21T03:31:34.7329666Z         "int": {
2026-06-21T03:31:34.7329780Z           "complete": false,
2026-06-21T03:31:34.7329886Z           "evidence": []
2026-06-21T03:31:34.7329990Z         },
2026-06-21T03:31:34.7330095Z         "unit": {
2026-06-21T03:31:34.7330210Z           "complete": true,
2026-06-21T03:31:34.7330324Z           "evidence": [
2026-06-21T03:31:34.7330430Z             {
2026-06-21T03:31:34.7330558Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7330663Z               "line": 94
2026-06-21T03:31:34.7330768Z             },
2026-06-21T03:31:34.7330963Z             {
2026-06-21T03:31:34.7331108Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7331207Z               "line": 111
2026-06-21T03:31:34.7331312Z             },
2026-06-21T03:31:34.7331417Z             {
2026-06-21T03:31:34.7331545Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7331663Z               "line": 124
2026-06-21T03:31:34.7331768Z             },
2026-06-21T03:31:34.7331876Z             {
2026-06-21T03:31:34.7332013Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7332114Z               "line": 134
2026-06-21T03:31:34.7332214Z             },
2026-06-21T03:31:34.7332318Z             {
2026-06-21T03:31:34.7332458Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7332567Z               "line": 144
2026-06-21T03:31:34.7332657Z             },
2026-06-21T03:31:34.7332763Z             {
2026-06-21T03:31:34.7332886Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:31:34.7333006Z               "line": 156
2026-06-21T03:31:34.7333106Z             },
2026-06-21T03:31:34.7333211Z             {
2026-06-21T03:31:34.7333364Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7333473Z               "line": 746
2026-06-21T03:31:34.7333572Z             },
2026-06-21T03:31:34.7333670Z             {
2026-06-21T03:31:34.7333815Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.7333926Z               "line": 309
2026-06-21T03:31:34.7334032Z             }
2026-06-21T03:31:34.7334140Z           ]
2026-06-21T03:31:34.7334231Z         }
2026-06-21T03:31:34.7334327Z       }
2026-06-21T03:31:34.7334422Z     },
2026-06-21T03:31:34.7334525Z     {
2026-06-21T03:31:34.7334649Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T03:31:34.7334811Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T03:31:34.7334921Z       "requiredStages": [
2026-06-21T03:31:34.7335022Z         "impl",
2026-06-21T03:31:34.7335136Z         "unit"
2026-06-21T03:31:34.7335236Z       ],
2026-06-21T03:31:34.7335346Z       "stages": {
2026-06-21T03:31:34.7335446Z         "doc": {
2026-06-21T03:31:34.7335560Z           "complete": false,
2026-06-21T03:31:34.7335671Z           "evidence": []
2026-06-21T03:31:34.7335775Z         },
2026-06-21T03:31:34.7335875Z         "impl": {
2026-06-21T03:31:34.7335995Z           "complete": true,
2026-06-21T03:31:34.7336104Z           "evidence": [
2026-06-21T03:31:34.7336205Z             {
2026-06-21T03:31:34.7336347Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.7336466Z               "line": 128
2026-06-21T03:31:34.7336563Z             }
2026-06-21T03:31:34.7336671Z           ]
2026-06-21T03:31:34.7336771Z         },
2026-06-21T03:31:34.7336875Z         "int": {
2026-06-21T03:31:34.7336979Z           "complete": false,
2026-06-21T03:31:34.7337092Z           "evidence": []
2026-06-21T03:31:34.7337202Z         },
2026-06-21T03:31:34.7337299Z         "unit": {
2026-06-21T03:31:34.7337426Z           "complete": true,
2026-06-21T03:31:34.7337531Z           "evidence": [
2026-06-21T03:31:34.7337637Z             {
2026-06-21T03:31:34.7337769Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.7337885Z               "line": 205
2026-06-21T03:31:34.7337989Z             }
2026-06-21T03:31:34.7338166Z           ]
2026-06-21T03:31:34.7338270Z         }
2026-06-21T03:31:34.7338374Z       }
2026-06-21T03:31:34.7338476Z     },
2026-06-21T03:31:34.7338570Z     {
2026-06-21T03:31:34.7338718Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T03:31:34.7338885Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T03:31:34.7339077Z       "requiredStages": [
2026-06-21T03:31:34.7339181Z         "impl",
2026-06-21T03:31:34.7339276Z         "unit"
2026-06-21T03:31:34.7339372Z       ],
2026-06-21T03:31:34.7339473Z       "stages": {
2026-06-21T03:31:34.7339581Z         "doc": {
2026-06-21T03:31:34.7339684Z           "complete": false,
2026-06-21T03:31:34.7339897Z           "evidence": []
2026-06-21T03:31:34.7340006Z         },
2026-06-21T03:31:34.7340108Z         "impl": {
2026-06-21T03:31:34.7340226Z           "complete": true,
2026-06-21T03:31:34.7340326Z           "evidence": [
2026-06-21T03:31:34.7340437Z             {
2026-06-21T03:31:34.7340564Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7340680Z               "line": 367
2026-06-21T03:31:34.7340789Z             },
2026-06-21T03:31:34.7340889Z             {
2026-06-21T03:31:34.7341018Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7341118Z               "line": 378
2026-06-21T03:31:34.7341223Z             },
2026-06-21T03:31:34.7341328Z             {
2026-06-21T03:31:34.7341461Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7341576Z               "line": 396
2026-06-21T03:31:34.7341663Z             }
2026-06-21T03:31:34.7341767Z           ]
2026-06-21T03:31:34.7341857Z         },
2026-06-21T03:31:34.7341968Z         "int": {
2026-06-21T03:31:34.7342077Z           "complete": false,
2026-06-21T03:31:34.7342185Z           "evidence": []
2026-06-21T03:31:34.7342285Z         },
2026-06-21T03:31:34.7342389Z         "unit": {
2026-06-21T03:31:34.7342498Z           "complete": true,
2026-06-21T03:31:34.7342607Z           "evidence": [
2026-06-21T03:31:34.7342718Z             {
2026-06-21T03:31:34.7342859Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7342966Z               "line": 420
2026-06-21T03:31:34.7343070Z             },
2026-06-21T03:31:34.7343174Z             {
2026-06-21T03:31:34.7343304Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7343413Z               "line": 441
2026-06-21T03:31:34.7343527Z             },
2026-06-21T03:31:34.7343633Z             {
2026-06-21T03:31:34.7343761Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7343876Z               "line": 811
2026-06-21T03:31:34.7343976Z             },
2026-06-21T03:31:34.7344081Z             {
2026-06-21T03:31:34.7344215Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7344333Z               "line": 822
2026-06-21T03:31:34.7344438Z             },
2026-06-21T03:31:34.7344544Z             {
2026-06-21T03:31:34.7344681Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7344781Z               "line": 835
2026-06-21T03:31:34.7344888Z             }
2026-06-21T03:31:34.7344986Z           ]
2026-06-21T03:31:34.7345090Z         }
2026-06-21T03:31:34.7345196Z       }
2026-06-21T03:31:34.7345292Z     },
2026-06-21T03:31:34.7345395Z     {
2026-06-21T03:31:34.7345529Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T03:31:34.7353119Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T03:31:34.7353554Z       "requiredStages": [
2026-06-21T03:31:34.7353659Z         "impl",
2026-06-21T03:31:34.7353763Z         "unit",
2026-06-21T03:31:34.7353869Z         "int"
2026-06-21T03:31:34.7353968Z       ],
2026-06-21T03:31:34.7354087Z       "stages": {
2026-06-21T03:31:34.7354193Z         "doc": {
2026-06-21T03:31:34.7354307Z           "complete": false,
2026-06-21T03:31:34.7354421Z           "evidence": []
2026-06-21T03:31:34.7354517Z         },
2026-06-21T03:31:34.7354626Z         "impl": {
2026-06-21T03:31:34.7354731Z           "complete": true,
2026-06-21T03:31:34.7354846Z           "evidence": [
2026-06-21T03:31:34.7354955Z             {
2026-06-21T03:31:34.7355109Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7355217Z               "line": 300
2026-06-21T03:31:34.7355318Z             },
2026-06-21T03:31:34.7355419Z             {
2026-06-21T03:31:34.7355574Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7355693Z               "line": 714
2026-06-21T03:31:34.7355799Z             },
2026-06-21T03:31:34.7355903Z             {
2026-06-21T03:31:34.7356041Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7356157Z               "line": 978
2026-06-21T03:31:34.7356270Z             }
2026-06-21T03:31:34.7356371Z           ]
2026-06-21T03:31:34.7356481Z         },
2026-06-21T03:31:34.7356590Z         "int": {
2026-06-21T03:31:34.7356700Z           "complete": true,
2026-06-21T03:31:34.7356815Z           "evidence": [
2026-06-21T03:31:34.7356909Z             {
2026-06-21T03:31:34.7357086Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7357191Z               "line": 222
2026-06-21T03:31:34.7357296Z             },
2026-06-21T03:31:34.7357411Z             {
2026-06-21T03:31:34.7357581Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7357697Z               "line": 348
2026-06-21T03:31:34.7357791Z             }
2026-06-21T03:31:34.7357900Z           ]
2026-06-21T03:31:34.7358010Z         },
2026-06-21T03:31:34.7358118Z         "unit": {
2026-06-21T03:31:34.7358236Z           "complete": true,
2026-06-21T03:31:34.7358346Z           "evidence": [
2026-06-21T03:31:34.7358531Z             {
2026-06-21T03:31:34.7358681Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7358804Z               "line": 2274
2026-06-21T03:31:34.7358913Z             },
2026-06-21T03:31:34.7359090Z             {
2026-06-21T03:31:34.7359238Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7359348Z               "line": 2332
2026-06-21T03:31:34.7359457Z             }
2026-06-21T03:31:34.7359557Z           ]
2026-06-21T03:31:34.7359663Z         }
2026-06-21T03:31:34.7359762Z       }
2026-06-21T03:31:34.7359858Z     },
2026-06-21T03:31:34.7359964Z     {
2026-06-21T03:31:34.7360110Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T03:31:34.7367450Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T03:31:34.7367670Z       "requiredStages": [
2026-06-21T03:31:34.7367775Z         "doc",
2026-06-21T03:31:34.7367880Z         "impl",
2026-06-21T03:31:34.7367990Z         "unit",
2026-06-21T03:31:34.7368094Z         "int"
2026-06-21T03:31:34.7368200Z       ],
2026-06-21T03:31:34.7368304Z       "stages": {
2026-06-21T03:31:34.7368413Z         "doc": {
2026-06-21T03:31:34.7368532Z           "complete": true,
2026-06-21T03:31:34.7368641Z           "evidence": [
2026-06-21T03:31:34.7368748Z             {
2026-06-21T03:31:34.7368887Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7369096Z               "line": 454
2026-06-21T03:31:34.7369207Z             }
2026-06-21T03:31:34.7369317Z           ]
2026-06-21T03:31:34.7369444Z         },
2026-06-21T03:31:34.7369546Z         "impl": {
2026-06-21T03:31:34.7369660Z           "complete": true,
2026-06-21T03:31:34.7369875Z           "evidence": [
2026-06-21T03:31:34.7369970Z             {
2026-06-21T03:31:34.7370122Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7370227Z               "line": 203
2026-06-21T03:31:34.7370337Z             },
2026-06-21T03:31:34.7370437Z             {
2026-06-21T03:31:34.7370575Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7370675Z               "line": 487
2026-06-21T03:31:34.7370782Z             },
2026-06-21T03:31:34.7370890Z             {
2026-06-21T03:31:34.7371033Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7371139Z               "line": 1688
2026-06-21T03:31:34.7371346Z             },
2026-06-21T03:31:34.7371451Z             {
2026-06-21T03:31:34.7371592Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.7371692Z               "line": 331
2026-06-21T03:31:34.7371798Z             }
2026-06-21T03:31:34.7371893Z           ]
2026-06-21T03:31:34.7371997Z         },
2026-06-21T03:31:34.7372113Z         "int": {
2026-06-21T03:31:34.7372231Z           "complete": true,
2026-06-21T03:31:34.7372340Z           "evidence": [
2026-06-21T03:31:34.7372442Z             {
2026-06-21T03:31:34.7372593Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7372694Z               "line": 720
2026-06-21T03:31:34.7372799Z             },
2026-06-21T03:31:34.7372899Z             {
2026-06-21T03:31:34.7373052Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7373160Z               "line": 837
2026-06-21T03:31:34.7373266Z             },
2026-06-21T03:31:34.7373376Z             {
2026-06-21T03:31:34.7373547Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T03:31:34.7373663Z               "line": 266
2026-06-21T03:31:34.7373772Z             }
2026-06-21T03:31:34.7373870Z           ]
2026-06-21T03:31:34.7373975Z         },
2026-06-21T03:31:34.7374084Z         "unit": {
2026-06-21T03:31:34.7374206Z           "complete": true,
2026-06-21T03:31:34.7374321Z           "evidence": [
2026-06-21T03:31:34.7374427Z             {
2026-06-21T03:31:34.7374564Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.7374675Z               "line": 985
2026-06-21T03:31:34.7374774Z             },
2026-06-21T03:31:34.7374883Z             {
2026-06-21T03:31:34.7375022Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.7375131Z               "line": 1019
2026-06-21T03:31:34.7375237Z             }
2026-06-21T03:31:34.7375342Z           ]
2026-06-21T03:31:34.7375451Z         }
2026-06-21T03:31:34.7375551Z       }
2026-06-21T03:31:34.7375657Z     },
2026-06-21T03:31:34.7375766Z     {
2026-06-21T03:31:34.7375891Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T03:31:34.7376511Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T03:31:34.7376639Z       "requiredStages": [
2026-06-21T03:31:34.7376752Z         "impl",
2026-06-21T03:31:34.7376856Z         "unit"
2026-06-21T03:31:34.7376958Z       ],
2026-06-21T03:31:34.7377076Z       "stages": {
2026-06-21T03:31:34.7377176Z         "doc": {
2026-06-21T03:31:34.7377301Z           "complete": false,
2026-06-21T03:31:34.7377414Z           "evidence": []
2026-06-21T03:31:34.7377511Z         },
2026-06-21T03:31:34.7377620Z         "impl": {
2026-06-21T03:31:34.7377739Z           "complete": true,
2026-06-21T03:31:34.7377854Z           "evidence": [
2026-06-21T03:31:34.7377953Z             {
2026-06-21T03:31:34.7378106Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7378216Z               "line": 759
2026-06-21T03:31:34.7378321Z             }
2026-06-21T03:31:34.7378416Z           ]
2026-06-21T03:31:34.7378508Z         },
2026-06-21T03:31:34.7378621Z         "int": {
2026-06-21T03:31:34.7378735Z           "complete": false,
2026-06-21T03:31:34.7378921Z           "evidence": []
2026-06-21T03:31:34.7379106Z         },
2026-06-21T03:31:34.7379215Z         "unit": {
2026-06-21T03:31:34.7379323Z           "complete": true,
2026-06-21T03:31:34.7379428Z           "evidence": [
2026-06-21T03:31:34.7379529Z             {
2026-06-21T03:31:34.7379680Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7379796Z               "line": 873
2026-06-21T03:31:34.7379900Z             }
2026-06-21T03:31:34.7380004Z           ]
2026-06-21T03:31:34.7380115Z         }
2026-06-21T03:31:34.7380215Z       }
2026-06-21T03:31:34.7380319Z     },
2026-06-21T03:31:34.7380411Z     {
2026-06-21T03:31:34.7380678Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T03:31:34.7383063Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T03:31:34.7383196Z       "requiredStages": [
2026-06-21T03:31:34.7383297Z         "impl",
2026-06-21T03:31:34.7383406Z         "unit",
2026-06-21T03:31:34.7383511Z         "int"
2026-06-21T03:31:34.7383617Z       ],
2026-06-21T03:31:34.7383721Z       "stages": {
2026-06-21T03:31:34.7383826Z         "doc": {
2026-06-21T03:31:34.7383936Z           "complete": false,
2026-06-21T03:31:34.7384054Z           "evidence": []
2026-06-21T03:31:34.7384170Z         },
2026-06-21T03:31:34.7384266Z         "impl": {
2026-06-21T03:31:34.7384378Z           "complete": true,
2026-06-21T03:31:34.7384487Z           "evidence": [
2026-06-21T03:31:34.7384597Z             {
2026-06-21T03:31:34.7384743Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7384862Z               "line": 705
2026-06-21T03:31:34.7384968Z             }
2026-06-21T03:31:34.7385066Z           ]
2026-06-21T03:31:34.7385177Z         },
2026-06-21T03:31:34.7385282Z         "int": {
2026-06-21T03:31:34.7385395Z           "complete": true,
2026-06-21T03:31:34.7385502Z           "evidence": [
2026-06-21T03:31:34.7385597Z             {
2026-06-21T03:31:34.7385773Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T03:31:34.7385879Z               "line": 24
2026-06-21T03:31:34.7385993Z             }
2026-06-21T03:31:34.7386097Z           ]
2026-06-21T03:31:34.7386203Z         },
2026-06-21T03:31:34.7386307Z         "unit": {
2026-06-21T03:31:34.7386431Z           "complete": true,
2026-06-21T03:31:34.7386551Z           "evidence": [
2026-06-21T03:31:34.7386646Z             {
2026-06-21T03:31:34.7386794Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7386903Z               "line": 918
2026-06-21T03:31:34.7387008Z             }
2026-06-21T03:31:34.7387114Z           ]
2026-06-21T03:31:34.7387218Z         }
2026-06-21T03:31:34.7387322Z       }
2026-06-21T03:31:34.7387426Z     },
2026-06-21T03:31:34.7387533Z     {
2026-06-21T03:31:34.7387665Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T03:31:34.7391319Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T03:31:34.7391690Z       "requiredStages": [
2026-06-21T03:31:34.7391805Z         "impl",
2026-06-21T03:31:34.7391911Z         "unit",
2026-06-21T03:31:34.7392019Z         "int"
2026-06-21T03:31:34.7392134Z       ],
2026-06-21T03:31:34.7392245Z       "stages": {
2026-06-21T03:31:34.7392344Z         "doc": {
2026-06-21T03:31:34.7392461Z           "complete": false,
2026-06-21T03:31:34.7392581Z           "evidence": []
2026-06-21T03:31:34.7392684Z         },
2026-06-21T03:31:34.7392783Z         "impl": {
2026-06-21T03:31:34.7392894Z           "complete": true,
2026-06-21T03:31:34.7393013Z           "evidence": [
2026-06-21T03:31:34.7393112Z             {
2026-06-21T03:31:34.7393266Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7393380Z               "line": 391
2026-06-21T03:31:34.7393466Z             },
2026-06-21T03:31:34.7393562Z             {
2026-06-21T03:31:34.7393714Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7393824Z               "line": 343
2026-06-21T03:31:34.7393938Z             },
2026-06-21T03:31:34.7394047Z             {
2026-06-21T03:31:34.7394187Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7394295Z               "line": 1750
2026-06-21T03:31:34.7394415Z             },
2026-06-21T03:31:34.7394516Z             {
2026-06-21T03:31:34.7394638Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7394744Z               "line": 3191
2026-06-21T03:31:34.7394854Z             }
2026-06-21T03:31:34.7394962Z           ]
2026-06-21T03:31:34.7395062Z         },
2026-06-21T03:31:34.7395167Z         "int": {
2026-06-21T03:31:34.7395279Z           "complete": true,
2026-06-21T03:31:34.7395388Z           "evidence": [
2026-06-21T03:31:34.7395490Z             {
2026-06-21T03:31:34.7395665Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:31:34.7395781Z               "line": 353
2026-06-21T03:31:34.7395881Z             },
2026-06-21T03:31:34.7395984Z             {
2026-06-21T03:31:34.7396157Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T03:31:34.7396266Z               "line": 23
2026-06-21T03:31:34.7396367Z             }
2026-06-21T03:31:34.7396481Z           ]
2026-06-21T03:31:34.7396585Z         },
2026-06-21T03:31:34.7396696Z         "unit": {
2026-06-21T03:31:34.7396815Z           "complete": true,
2026-06-21T03:31:34.7396919Z           "evidence": [
2026-06-21T03:31:34.7397021Z             {
2026-06-21T03:31:34.7397153Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7397258Z               "line": 743
2026-06-21T03:31:34.7397364Z             },
2026-06-21T03:31:34.7397472Z             {
2026-06-21T03:31:34.7397602Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7397707Z               "line": 7863
2026-06-21T03:31:34.7397815Z             }
2026-06-21T03:31:34.7397924Z           ]
2026-06-21T03:31:34.7398035Z         }
2026-06-21T03:31:34.7398139Z       }
2026-06-21T03:31:34.7398244Z     },
2026-06-21T03:31:34.7398350Z     {
2026-06-21T03:31:34.7398487Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T03:31:34.7401903Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T03:31:34.7402255Z       "requiredStages": [
2026-06-21T03:31:34.7402355Z         "impl",
2026-06-21T03:31:34.7402466Z         "unit",
2026-06-21T03:31:34.7402575Z         "int"
2026-06-21T03:31:34.7402675Z       ],
2026-06-21T03:31:34.7402781Z       "stages": {
2026-06-21T03:31:34.7402880Z         "doc": {
2026-06-21T03:31:34.7402998Z           "complete": false,
2026-06-21T03:31:34.7403098Z           "evidence": []
2026-06-21T03:31:34.7403202Z         },
2026-06-21T03:31:34.7403315Z         "impl": {
2026-06-21T03:31:34.7403425Z           "complete": true,
2026-06-21T03:31:34.7403535Z           "evidence": [
2026-06-21T03:31:34.7403644Z             {
2026-06-21T03:31:34.7403798Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7403911Z               "line": 64
2026-06-21T03:31:34.7404011Z             },
2026-06-21T03:31:34.7404117Z             {
2026-06-21T03:31:34.7404269Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7404389Z               "line": 78
2026-06-21T03:31:34.7404484Z             },
2026-06-21T03:31:34.7404598Z             {
2026-06-21T03:31:34.7404751Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7404855Z               "line": 170
2026-06-21T03:31:34.7404965Z             },
2026-06-21T03:31:34.7405066Z             {
2026-06-21T03:31:34.7408014Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7408162Z               "line": 185
2026-06-21T03:31:34.7408258Z             },
2026-06-21T03:31:34.7408366Z             {
2026-06-21T03:31:34.7408518Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7408648Z               "line": 195
2026-06-21T03:31:34.7408751Z             },
2026-06-21T03:31:34.7408862Z             {
2026-06-21T03:31:34.7409090Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7409196Z               "line": 205
2026-06-21T03:31:34.7409300Z             },
2026-06-21T03:31:34.7409419Z             {
2026-06-21T03:31:34.7409568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7409682Z               "line": 294
2026-06-21T03:31:34.7409777Z             },
2026-06-21T03:31:34.7409883Z             {
2026-06-21T03:31:34.7410029Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7410145Z               "line": 308
2026-06-21T03:31:34.7410249Z             },
2026-06-21T03:31:34.7410349Z             {
2026-06-21T03:31:34.7410503Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7410606Z               "line": 377
2026-06-21T03:31:34.7410710Z             },
2026-06-21T03:31:34.7410815Z             {
2026-06-21T03:31:34.7410970Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7411070Z               "line": 437
2026-06-21T03:31:34.7411176Z             },
2026-06-21T03:31:34.7411280Z             {
2026-06-21T03:31:34.7411428Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7411676Z               "line": 455
2026-06-21T03:31:34.7411787Z             }
2026-06-21T03:31:34.7411896Z           ]
2026-06-21T03:31:34.7411990Z         },
2026-06-21T03:31:34.7412101Z         "int": {
2026-06-21T03:31:34.7412215Z           "complete": true,
2026-06-21T03:31:34.7412324Z           "evidence": [
2026-06-21T03:31:34.7412430Z             {
2026-06-21T03:31:34.7412586Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:31:34.7412707Z               "line": 45
2026-06-21T03:31:34.7412801Z             },
2026-06-21T03:31:34.7412901Z             {
2026-06-21T03:31:34.7413158Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:31:34.7413274Z               "line": 354
2026-06-21T03:31:34.7413380Z             },
2026-06-21T03:31:34.7413482Z             {
2026-06-21T03:31:34.7413658Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T03:31:34.7413772Z               "line": 31
2026-06-21T03:31:34.7413875Z             }
2026-06-21T03:31:34.7413980Z           ]
2026-06-21T03:31:34.7414086Z         },
2026-06-21T03:31:34.7414200Z         "unit": {
2026-06-21T03:31:34.7414310Z           "complete": true,
2026-06-21T03:31:34.7414429Z           "evidence": [
2026-06-21T03:31:34.7414538Z             {
2026-06-21T03:31:34.7414691Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7414796Z               "line": 727
2026-06-21T03:31:34.7414901Z             }
2026-06-21T03:31:34.7415011Z           ]
2026-06-21T03:31:34.7415106Z         }
2026-06-21T03:31:34.7415215Z       }
2026-06-21T03:31:34.7415330Z     },
2026-06-21T03:31:34.7415435Z     {
2026-06-21T03:31:34.7415564Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T03:31:34.7415812Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T03:31:34.7415928Z       "requiredStages": [
2026-06-21T03:31:34.7416035Z         "impl",
2026-06-21T03:31:34.7416153Z         "unit"
2026-06-21T03:31:34.7416259Z       ],
2026-06-21T03:31:34.7416352Z       "stages": {
2026-06-21T03:31:34.7416456Z         "doc": {
2026-06-21T03:31:34.7416581Z           "complete": false,
2026-06-21T03:31:34.7416695Z           "evidence": []
2026-06-21T03:31:34.7416799Z         },
2026-06-21T03:31:34.7416910Z         "impl": {
2026-06-21T03:31:34.7417020Z           "complete": true,
2026-06-21T03:31:34.7417138Z           "evidence": [
2026-06-21T03:31:34.7417230Z             {
2026-06-21T03:31:34.7417367Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7417477Z               "line": 14
2026-06-21T03:31:34.7417582Z             },
2026-06-21T03:31:34.7417692Z             {
2026-06-21T03:31:34.7417826Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.7417935Z               "line": 566
2026-06-21T03:31:34.7418035Z             }
2026-06-21T03:31:34.7418131Z           ]
2026-06-21T03:31:34.7418240Z         },
2026-06-21T03:31:34.7418354Z         "int": {
2026-06-21T03:31:34.7418470Z           "complete": false,
2026-06-21T03:31:34.7418574Z           "evidence": []
2026-06-21T03:31:34.7418679Z         },
2026-06-21T03:31:34.7418790Z         "unit": {
2026-06-21T03:31:34.7418903Z           "complete": true,
2026-06-21T03:31:34.7419102Z           "evidence": [
2026-06-21T03:31:34.7419213Z             {
2026-06-21T03:31:34.7419349Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7419455Z               "line": 130
2026-06-21T03:31:34.7419565Z             },
2026-06-21T03:31:34.7419669Z             {
2026-06-21T03:31:34.7419804Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7419922Z               "line": 138
2026-06-21T03:31:34.7420027Z             },
2026-06-21T03:31:34.7420128Z             {
2026-06-21T03:31:34.7420256Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7420361Z               "line": 146
2026-06-21T03:31:34.7420467Z             },
2026-06-21T03:31:34.7420671Z             {
2026-06-21T03:31:34.7420805Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7420909Z               "line": 154
2026-06-21T03:31:34.7421015Z             },
2026-06-21T03:31:34.7421115Z             {
2026-06-21T03:31:34.7421242Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7421342Z               "line": 162
2026-06-21T03:31:34.7421446Z             },
2026-06-21T03:31:34.7421549Z             {
2026-06-21T03:31:34.7421674Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:31:34.7421780Z               "line": 170
2026-06-21T03:31:34.7421883Z             }
2026-06-21T03:31:34.7421984Z           ]
2026-06-21T03:31:34.7422178Z         }
2026-06-21T03:31:34.7422284Z       }
2026-06-21T03:31:34.7422385Z     },
2026-06-21T03:31:34.7422489Z     {
2026-06-21T03:31:34.7422618Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T03:31:34.7423573Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T03:31:34.7423709Z       "requiredStages": [
2026-06-21T03:31:34.7423814Z         "impl",
2026-06-21T03:31:34.7423916Z         "unit"
2026-06-21T03:31:34.7424024Z       ],
2026-06-21T03:31:34.7424124Z       "stages": {
2026-06-21T03:31:34.7424228Z         "doc": {
2026-06-21T03:31:34.7424341Z           "complete": false,
2026-06-21T03:31:34.7424445Z           "evidence": []
2026-06-21T03:31:34.7424541Z         },
2026-06-21T03:31:34.7424646Z         "impl": {
2026-06-21T03:31:34.7424779Z           "complete": true,
2026-06-21T03:31:34.7424890Z           "evidence": [
2026-06-21T03:31:34.7424995Z             {
2026-06-21T03:31:34.7425175Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7425280Z               "line": 34
2026-06-21T03:31:34.7425389Z             }
2026-06-21T03:31:34.7425504Z           ]
2026-06-21T03:31:34.7425613Z         },
2026-06-21T03:31:34.7425718Z         "int": {
2026-06-21T03:31:34.7425834Z           "complete": false,
2026-06-21T03:31:34.7425942Z           "evidence": []
2026-06-21T03:31:34.7426047Z         },
2026-06-21T03:31:34.7426163Z         "unit": {
2026-06-21T03:31:34.7426280Z           "complete": true,
2026-06-21T03:31:34.7426391Z           "evidence": [
2026-06-21T03:31:34.7426483Z             {
2026-06-21T03:31:34.7426652Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7426762Z               "line": 188
2026-06-21T03:31:34.7426861Z             },
2026-06-21T03:31:34.7426979Z             {
2026-06-21T03:31:34.7427146Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7427251Z               "line": 200
2026-06-21T03:31:34.7427359Z             },
2026-06-21T03:31:34.7427461Z             {
2026-06-21T03:31:34.7427627Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7427737Z               "line": 211
2026-06-21T03:31:34.7427832Z             },
2026-06-21T03:31:34.7427937Z             {
2026-06-21T03:31:34.7428096Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7428204Z               "line": 253
2026-06-21T03:31:34.7428304Z             },
2026-06-21T03:31:34.7428406Z             {
2026-06-21T03:31:34.7428571Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7428681Z               "line": 277
2026-06-21T03:31:34.7428786Z             },
2026-06-21T03:31:34.7428886Z             {
2026-06-21T03:31:34.7429115Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7429215Z               "line": 300
2026-06-21T03:31:34.7429316Z             },
2026-06-21T03:31:34.7429411Z             {
2026-06-21T03:31:34.7429576Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:31:34.7429796Z               "line": 316
2026-06-21T03:31:34.7429905Z             }
2026-06-21T03:31:34.7430006Z           ]
2026-06-21T03:31:34.7430101Z         }
2026-06-21T03:31:34.7430201Z       }
2026-06-21T03:31:34.7430297Z     },
2026-06-21T03:31:34.7430402Z     {
2026-06-21T03:31:34.7430543Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T03:31:34.7431117Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T03:31:34.7431231Z       "requiredStages": [
2026-06-21T03:31:34.7431332Z         "impl",
2026-06-21T03:31:34.7431541Z         "unit"
2026-06-21T03:31:34.7431642Z       ],
2026-06-21T03:31:34.7431755Z       "stages": {
2026-06-21T03:31:34.7431859Z         "doc": {
2026-06-21T03:31:34.7431964Z           "complete": false,
2026-06-21T03:31:34.7432077Z           "evidence": []
2026-06-21T03:31:34.7432176Z         },
2026-06-21T03:31:34.7432297Z         "impl": {
2026-06-21T03:31:34.7432405Z           "complete": true,
2026-06-21T03:31:34.7432515Z           "evidence": [
2026-06-21T03:31:34.7432616Z             {
2026-06-21T03:31:34.7432762Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7432869Z               "line": 29
2026-06-21T03:31:34.7432977Z             },
2026-06-21T03:31:34.7433086Z             {
2026-06-21T03:31:34.7433226Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7433326Z               "line": 174
2026-06-21T03:31:34.7433430Z             },
2026-06-21T03:31:34.7433536Z             {
2026-06-21T03:31:34.7433669Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7433793Z               "line": 194
2026-06-21T03:31:34.7433894Z             },
2026-06-21T03:31:34.7433998Z             {
2026-06-21T03:31:34.7434133Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7434246Z               "line": 222
2026-06-21T03:31:34.7434355Z             }
2026-06-21T03:31:34.7434457Z           ]
2026-06-21T03:31:34.7434561Z         },
2026-06-21T03:31:34.7434664Z         "int": {
2026-06-21T03:31:34.7434774Z           "complete": false,
2026-06-21T03:31:34.7434883Z           "evidence": []
2026-06-21T03:31:34.7434986Z         },
2026-06-21T03:31:34.7435096Z         "unit": {
2026-06-21T03:31:34.7435211Z           "complete": true,
2026-06-21T03:31:34.7435315Z           "evidence": [
2026-06-21T03:31:34.7435421Z             {
2026-06-21T03:31:34.7435555Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7435673Z               "line": 329
2026-06-21T03:31:34.7435774Z             },
2026-06-21T03:31:34.7435889Z             {
2026-06-21T03:31:34.7436021Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7436127Z               "line": 344
2026-06-21T03:31:34.7436236Z             },
2026-06-21T03:31:34.7436331Z             {
2026-06-21T03:31:34.7436461Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7436560Z               "line": 417
2026-06-21T03:31:34.7436670Z             },
2026-06-21T03:31:34.7436771Z             {
2026-06-21T03:31:34.7436917Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7437028Z               "line": 433
2026-06-21T03:31:34.7437123Z             },
2026-06-21T03:31:34.7437231Z             {
2026-06-21T03:31:34.7437360Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7437468Z               "line": 492
2026-06-21T03:31:34.7437572Z             },
2026-06-21T03:31:34.7437677Z             {
2026-06-21T03:31:34.7437820Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7437929Z               "line": 506
2026-06-21T03:31:34.7438031Z             },
2026-06-21T03:31:34.7438135Z             {
2026-06-21T03:31:34.7438273Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7438378Z               "line": 517
2026-06-21T03:31:34.7438478Z             },
2026-06-21T03:31:34.7438656Z             {
2026-06-21T03:31:34.7438798Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7438912Z               "line": 528
2026-06-21T03:31:34.7439069Z             }
2026-06-21T03:31:34.7439179Z           ]
2026-06-21T03:31:34.7439285Z         }
2026-06-21T03:31:34.7439389Z       }
2026-06-21T03:31:34.7439494Z     },
2026-06-21T03:31:34.7439595Z     {
2026-06-21T03:31:34.7439741Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T03:31:34.7440427Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T03:31:34.7440647Z       "requiredStages": [
2026-06-21T03:31:34.7440751Z         "impl",
2026-06-21T03:31:34.7440852Z         "unit"
2026-06-21T03:31:34.7440957Z       ],
2026-06-21T03:31:34.7441066Z       "stages": {
2026-06-21T03:31:34.7441171Z         "doc": {
2026-06-21T03:31:34.7441291Z           "complete": false,
2026-06-21T03:31:34.7441400Z           "evidence": []
2026-06-21T03:31:34.7441511Z         },
2026-06-21T03:31:34.7441615Z         "impl": {
2026-06-21T03:31:34.7441720Z           "complete": true,
2026-06-21T03:31:34.7441831Z           "evidence": [
2026-06-21T03:31:34.7441934Z             {
2026-06-21T03:31:34.7442087Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7442197Z               "line": 27
2026-06-21T03:31:34.7442306Z             },
2026-06-21T03:31:34.7442405Z             {
2026-06-21T03:31:34.7442562Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7442669Z               "line": 110
2026-06-21T03:31:34.7442775Z             },
2026-06-21T03:31:34.7442880Z             {
2026-06-21T03:31:34.7443036Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7443147Z               "line": 153
2026-06-21T03:31:34.7443242Z             },
2026-06-21T03:31:34.7443356Z             {
2026-06-21T03:31:34.7443505Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7443614Z               "line": 182
2026-06-21T03:31:34.7443719Z             },
2026-06-21T03:31:34.7443824Z             {
2026-06-21T03:31:34.7444000Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7444110Z               "line": 31
2026-06-21T03:31:34.7444220Z             },
2026-06-21T03:31:34.7444314Z             {
2026-06-21T03:31:34.7444482Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7444596Z               "line": 113
2026-06-21T03:31:34.7444707Z             },
2026-06-21T03:31:34.7444802Z             {
2026-06-21T03:31:34.7444964Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7445069Z               "line": 138
2026-06-21T03:31:34.7445173Z             }
2026-06-21T03:31:34.7445277Z           ]
2026-06-21T03:31:34.7445382Z         },
2026-06-21T03:31:34.7445490Z         "int": {
2026-06-21T03:31:34.7445599Z           "complete": false,
2026-06-21T03:31:34.7445704Z           "evidence": []
2026-06-21T03:31:34.7445809Z         },
2026-06-21T03:31:34.7445918Z         "unit": {
2026-06-21T03:31:34.7446034Z           "complete": true,
2026-06-21T03:31:34.7446148Z           "evidence": [
2026-06-21T03:31:34.7446252Z             {
2026-06-21T03:31:34.7446405Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7446509Z               "line": 261
2026-06-21T03:31:34.7446620Z             },
2026-06-21T03:31:34.7446725Z             {
2026-06-21T03:31:34.7446877Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7446997Z               "line": 276
2026-06-21T03:31:34.7447100Z             },
2026-06-21T03:31:34.7447211Z             {
2026-06-21T03:31:34.7447364Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7447473Z               "line": 293
2026-06-21T03:31:34.7447679Z             },
2026-06-21T03:31:34.7447782Z             {
2026-06-21T03:31:34.7447934Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7448038Z               "line": 310
2026-06-21T03:31:34.7448156Z             },
2026-06-21T03:31:34.7448256Z             {
2026-06-21T03:31:34.7448409Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7448514Z               "line": 327
2026-06-21T03:31:34.7448610Z             },
2026-06-21T03:31:34.7448719Z             {
2026-06-21T03:31:34.7448867Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.7449061Z               "line": 366
2026-06-21T03:31:34.7449267Z             },
2026-06-21T03:31:34.7449386Z             {
2026-06-21T03:31:34.7449550Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7449654Z               "line": 179
2026-06-21T03:31:34.7449758Z             },
2026-06-21T03:31:34.7449860Z             {
2026-06-21T03:31:34.7450039Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7450145Z               "line": 194
2026-06-21T03:31:34.7450254Z             },
2026-06-21T03:31:34.7450359Z             {
2026-06-21T03:31:34.7450513Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7450620Z               "line": 204
2026-06-21T03:31:34.7450715Z             },
2026-06-21T03:31:34.7450821Z             {
2026-06-21T03:31:34.7450978Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7451088Z               "line": 259
2026-06-21T03:31:34.7451198Z             },
2026-06-21T03:31:34.7451311Z             {
2026-06-21T03:31:34.7451475Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7451584Z               "line": 269
2026-06-21T03:31:34.7451688Z             },
2026-06-21T03:31:34.7451794Z             {
2026-06-21T03:31:34.7451960Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.7452080Z               "line": 283
2026-06-21T03:31:34.7452184Z             }
2026-06-21T03:31:34.7452284Z           ]
2026-06-21T03:31:34.7452376Z         }
2026-06-21T03:31:34.7452480Z       }
2026-06-21T03:31:34.7452585Z     },
2026-06-21T03:31:34.7452690Z     {
2026-06-21T03:31:34.7452832Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T03:31:34.7453032Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T03:31:34.7453159Z       "requiredStages": [],
2026-06-21T03:31:34.7453267Z       "stages": {
2026-06-21T03:31:34.7453378Z         "doc": {
2026-06-21T03:31:34.7453497Z           "complete": false,
2026-06-21T03:31:34.7453611Z           "evidence": []
2026-06-21T03:31:34.7453717Z         },
2026-06-21T03:31:34.7453826Z         "impl": {
2026-06-21T03:31:34.7453940Z           "complete": false,
2026-06-21T03:31:34.7454041Z           "evidence": []
2026-06-21T03:31:34.7454141Z         },
2026-06-21T03:31:34.7454240Z         "int": {
2026-06-21T03:31:34.7454356Z           "complete": false,
2026-06-21T03:31:34.7454465Z           "evidence": []
2026-06-21T03:31:34.7454565Z         },
2026-06-21T03:31:34.7454675Z         "unit": {
2026-06-21T03:31:34.7454789Z           "complete": false,
2026-06-21T03:31:34.7454909Z           "evidence": []
2026-06-21T03:31:34.7454995Z         }
2026-06-21T03:31:34.7455099Z       }
2026-06-21T03:31:34.7455199Z     },
2026-06-21T03:31:34.7455296Z     {
2026-06-21T03:31:34.7455442Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T03:31:34.7456298Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T03:31:34.7456431Z       "requiredStages": [
2026-06-21T03:31:34.7456541Z         "impl",
2026-06-21T03:31:34.7456646Z         "unit"
2026-06-21T03:31:34.7456866Z       ],
2026-06-21T03:31:34.7456975Z       "stages": {
2026-06-21T03:31:34.7457084Z         "doc": {
2026-06-21T03:31:34.7457190Z           "complete": false,
2026-06-21T03:31:34.7457299Z           "evidence": []
2026-06-21T03:31:34.7457408Z         },
2026-06-21T03:31:34.7457510Z         "impl": {
2026-06-21T03:31:34.7457618Z           "complete": true,
2026-06-21T03:31:34.7457718Z           "evidence": [
2026-06-21T03:31:34.7457829Z             {
2026-06-21T03:31:34.7457980Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7458096Z               "line": 26
2026-06-21T03:31:34.7458206Z             },
2026-06-21T03:31:34.7458385Z             {
2026-06-21T03:31:34.7458537Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7458645Z               "line": 95
2026-06-21T03:31:34.7458749Z             },
2026-06-21T03:31:34.7458846Z             {
2026-06-21T03:31:34.7459083Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7459198Z               "line": 166
2026-06-21T03:31:34.7459293Z             },
2026-06-21T03:31:34.7459408Z             {
2026-06-21T03:31:34.7459551Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7459655Z               "line": 19
2026-06-21T03:31:34.7459761Z             },
2026-06-21T03:31:34.7459870Z             {
2026-06-21T03:31:34.7460022Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7460133Z               "line": 50
2026-06-21T03:31:34.7460238Z             },
2026-06-21T03:31:34.7460337Z             {
2026-06-21T03:31:34.7460467Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:31:34.7460585Z               "line": 18
2026-06-21T03:31:34.7460692Z             },
2026-06-21T03:31:34.7460791Z             {
2026-06-21T03:31:34.7460919Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:31:34.7461035Z               "line": 71
2026-06-21T03:31:34.7461139Z             },
2026-06-21T03:31:34.7461243Z             {
2026-06-21T03:31:34.7461386Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.7461495Z               "line": 87
2026-06-21T03:31:34.7461600Z             }
2026-06-21T03:31:34.7461701Z           ]
2026-06-21T03:31:34.7461801Z         },
2026-06-21T03:31:34.7461900Z         "int": {
2026-06-21T03:31:34.7462016Z           "complete": false,
2026-06-21T03:31:34.7462125Z           "evidence": []
2026-06-21T03:31:34.7462239Z         },
2026-06-21T03:31:34.7462350Z         "unit": {
2026-06-21T03:31:34.7462459Z           "complete": true,
2026-06-21T03:31:34.7462568Z           "evidence": [
2026-06-21T03:31:34.7462670Z             {
2026-06-21T03:31:34.7462811Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7462927Z               "line": 289
2026-06-21T03:31:34.7463026Z             },
2026-06-21T03:31:34.7463135Z             {
2026-06-21T03:31:34.7463265Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7463378Z               "line": 314
2026-06-21T03:31:34.7463492Z             },
2026-06-21T03:31:34.7463597Z             {
2026-06-21T03:31:34.7463742Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7463851Z               "line": 350
2026-06-21T03:31:34.7463962Z             },
2026-06-21T03:31:34.7464062Z             {
2026-06-21T03:31:34.7464210Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7464315Z               "line": 418
2026-06-21T03:31:34.7464424Z             },
2026-06-21T03:31:34.7464534Z             {
2026-06-21T03:31:34.7464673Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7464791Z               "line": 429
2026-06-21T03:31:34.7464888Z             },
2026-06-21T03:31:34.7464997Z             {
2026-06-21T03:31:34.7465139Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7465250Z               "line": 460
2026-06-21T03:31:34.7465359Z             },
2026-06-21T03:31:34.7465459Z             {
2026-06-21T03:31:34.7465707Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.7465813Z               "line": 471
2026-06-21T03:31:34.7465917Z             },
2026-06-21T03:31:34.7466017Z             {
2026-06-21T03:31:34.7466166Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7466279Z               "line": 77
2026-06-21T03:31:34.7466382Z             },
2026-06-21T03:31:34.7466488Z             {
2026-06-21T03:31:34.7466624Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7466733Z               "line": 97
2026-06-21T03:31:34.7466839Z             },
2026-06-21T03:31:34.7466948Z             {
2026-06-21T03:31:34.7467197Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7467310Z               "line": 112
2026-06-21T03:31:34.7467416Z             },
2026-06-21T03:31:34.7467506Z             {
2026-06-21T03:31:34.7467649Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7467765Z               "line": 123
2026-06-21T03:31:34.7467873Z             },
2026-06-21T03:31:34.7467982Z             {
2026-06-21T03:31:34.7468122Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7468230Z               "line": 130
2026-06-21T03:31:34.7468336Z             },
2026-06-21T03:31:34.7468437Z             {
2026-06-21T03:31:34.7468579Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:31:34.7468699Z               "line": 145
2026-06-21T03:31:34.7468804Z             },
2026-06-21T03:31:34.7468911Z             {
2026-06-21T03:31:34.7469125Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:31:34.7469233Z               "line": 115
2026-06-21T03:31:34.7469348Z             },
2026-06-21T03:31:34.7469459Z             {
2026-06-21T03:31:34.7469595Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:31:34.7469706Z               "line": 130
2026-06-21T03:31:34.7469807Z             },
2026-06-21T03:31:34.7469915Z             {
2026-06-21T03:31:34.7470064Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.7470178Z               "line": 428
2026-06-21T03:31:34.7470283Z             }
2026-06-21T03:31:34.7470388Z           ]
2026-06-21T03:31:34.7470502Z         }
2026-06-21T03:31:34.7470592Z       }
2026-06-21T03:31:34.7470703Z     },
2026-06-21T03:31:34.7470798Z     {
2026-06-21T03:31:34.7470942Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T03:31:34.7477128Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T03:31:34.7477428Z       "requiredStages": [
2026-06-21T03:31:34.7477537Z         "impl",
2026-06-21T03:31:34.7477738Z         "unit",
2026-06-21T03:31:34.7477846Z         "int"
2026-06-21T03:31:34.7477947Z       ],
2026-06-21T03:31:34.7478057Z       "stages": {
2026-06-21T03:31:34.7478166Z         "doc": {
2026-06-21T03:31:34.7478276Z           "complete": false,
2026-06-21T03:31:34.7478391Z           "evidence": []
2026-06-21T03:31:34.7478500Z         },
2026-06-21T03:31:34.7478610Z         "impl": {
2026-06-21T03:31:34.7478724Z           "complete": true,
2026-06-21T03:31:34.7478834Z           "evidence": [
2026-06-21T03:31:34.7478935Z             {
2026-06-21T03:31:34.7479149Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7479255Z               "line": 895
2026-06-21T03:31:34.7479359Z             },
2026-06-21T03:31:34.7479462Z             {
2026-06-21T03:31:34.7479601Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7479718Z               "line": 322
2026-06-21T03:31:34.7479826Z             }
2026-06-21T03:31:34.7479928Z           ]
2026-06-21T03:31:34.7480038Z         },
2026-06-21T03:31:34.7480141Z         "int": {
2026-06-21T03:31:34.7480262Z           "complete": true,
2026-06-21T03:31:34.7480367Z           "evidence": [
2026-06-21T03:31:34.7480460Z             {
2026-06-21T03:31:34.7480652Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.7480771Z               "line": 1909
2026-06-21T03:31:34.7480863Z             }
2026-06-21T03:31:34.7480967Z           ]
2026-06-21T03:31:34.7481071Z         },
2026-06-21T03:31:34.7481182Z         "unit": {
2026-06-21T03:31:34.7481305Z           "complete": true,
2026-06-21T03:31:34.7481410Z           "evidence": [
2026-06-21T03:31:34.7481512Z             {
2026-06-21T03:31:34.7481672Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7481783Z               "line": 2376
2026-06-21T03:31:34.7481897Z             },
2026-06-21T03:31:34.7482001Z             {
2026-06-21T03:31:34.7482151Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7482268Z               "line": 2440
2026-06-21T03:31:34.7482372Z             },
2026-06-21T03:31:34.7482477Z             {
2026-06-21T03:31:34.7482621Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7482734Z               "line": 2495
2026-06-21T03:31:34.7482831Z             }
2026-06-21T03:31:34.7482931Z           ]
2026-06-21T03:31:34.7483044Z         }
2026-06-21T03:31:34.7483141Z       }
2026-06-21T03:31:34.7483236Z     },
2026-06-21T03:31:34.7483340Z     {
2026-06-21T03:31:34.7483484Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T03:31:34.7484351Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T03:31:34.7484481Z       "requiredStages": [
2026-06-21T03:31:34.7484584Z         "doc",
2026-06-21T03:31:34.7484689Z         "impl",
2026-06-21T03:31:34.7484798Z         "unit"
2026-06-21T03:31:34.7484901Z       ],
2026-06-21T03:31:34.7485011Z       "stages": {
2026-06-21T03:31:34.7485111Z         "doc": {
2026-06-21T03:31:34.7485215Z           "complete": true,
2026-06-21T03:31:34.7485325Z           "evidence": [
2026-06-21T03:31:34.7485426Z             {
2026-06-21T03:31:34.7485669Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7485778Z               "line": 374
2026-06-21T03:31:34.7485887Z             }
2026-06-21T03:31:34.7485989Z           ]
2026-06-21T03:31:34.7486088Z         },
2026-06-21T03:31:34.7486202Z         "impl": {
2026-06-21T03:31:34.7486313Z           "complete": true,
2026-06-21T03:31:34.7486422Z           "evidence": [
2026-06-21T03:31:34.7486522Z             {
2026-06-21T03:31:34.7486671Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7486789Z               "line": 200
2026-06-21T03:31:34.7486885Z             },
2026-06-21T03:31:34.7486995Z             {
2026-06-21T03:31:34.7487219Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7487329Z               "line": 304
2026-06-21T03:31:34.7487437Z             },
2026-06-21T03:31:34.7487541Z             {
2026-06-21T03:31:34.7487693Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7487811Z               "line": 562
2026-06-21T03:31:34.7487916Z             },
2026-06-21T03:31:34.7488017Z             {
2026-06-21T03:31:34.7488158Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7488269Z               "line": 577
2026-06-21T03:31:34.7488378Z             },
2026-06-21T03:31:34.7488483Z             {
2026-06-21T03:31:34.7488612Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7488726Z               "line": 1224
2026-06-21T03:31:34.7488832Z             },
2026-06-21T03:31:34.7489036Z             {
2026-06-21T03:31:34.7489185Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7489322Z               "line": 443
2026-06-21T03:31:34.7489446Z             },
2026-06-21T03:31:34.7489543Z             {
2026-06-21T03:31:34.7489689Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7489791Z               "line": 590
2026-06-21T03:31:34.7489900Z             },
2026-06-21T03:31:34.7489999Z             {
2026-06-21T03:31:34.7490151Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7490273Z               "line": 731
2026-06-21T03:31:34.7490368Z             }
2026-06-21T03:31:34.7490473Z           ]
2026-06-21T03:31:34.7490579Z         },
2026-06-21T03:31:34.7490678Z         "int": {
2026-06-21T03:31:34.7490788Z           "complete": false,
2026-06-21T03:31:34.7490898Z           "evidence": []
2026-06-21T03:31:34.7491011Z         },
2026-06-21T03:31:34.7491113Z         "unit": {
2026-06-21T03:31:34.7491231Z           "complete": true,
2026-06-21T03:31:34.7491336Z           "evidence": [
2026-06-21T03:31:34.7491447Z             {
2026-06-21T03:31:34.7491599Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7491708Z               "line": 1155
2026-06-21T03:31:34.7491818Z             },
2026-06-21T03:31:34.7491923Z             {
2026-06-21T03:31:34.7492091Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T03:31:34.7492194Z               "line": 30
2026-06-21T03:31:34.7492308Z             }
2026-06-21T03:31:34.7492406Z           ]
2026-06-21T03:31:34.7492513Z         }
2026-06-21T03:31:34.7492619Z       }
2026-06-21T03:31:34.7492716Z     },
2026-06-21T03:31:34.7492824Z     {
2026-06-21T03:31:34.7492956Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T03:31:34.7496310Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T03:31:34.7496568Z       "requiredStages": [
2026-06-21T03:31:34.7496677Z         "impl",
2026-06-21T03:31:34.7496786Z         "unit",
2026-06-21T03:31:34.7496892Z         "int"
2026-06-21T03:31:34.7496991Z       ],
2026-06-21T03:31:34.7497101Z       "stages": {
2026-06-21T03:31:34.7497320Z         "doc": {
2026-06-21T03:31:34.7497430Z           "complete": false,
2026-06-21T03:31:34.7500370Z           "evidence": []
2026-06-21T03:31:34.7500493Z         },
2026-06-21T03:31:34.7500611Z         "impl": {
2026-06-21T03:31:34.7500730Z           "complete": true,
2026-06-21T03:31:34.7500838Z           "evidence": [
2026-06-21T03:31:34.7500966Z             {
2026-06-21T03:31:34.7501096Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7501210Z               "line": 718
2026-06-21T03:31:34.7501315Z             },
2026-06-21T03:31:34.7501420Z             {
2026-06-21T03:31:34.7501543Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7501658Z               "line": 887
2026-06-21T03:31:34.7501758Z             }
2026-06-21T03:31:34.7501867Z           ]
2026-06-21T03:31:34.7501973Z         },
2026-06-21T03:31:34.7502068Z         "int": {
2026-06-21T03:31:34.7502187Z           "complete": true,
2026-06-21T03:31:34.7502292Z           "evidence": [
2026-06-21T03:31:34.7502402Z             {
2026-06-21T03:31:34.7502559Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.7502665Z               "line": 403
2026-06-21T03:31:34.7502773Z             }
2026-06-21T03:31:34.7502873Z           ]
2026-06-21T03:31:34.7502971Z         },
2026-06-21T03:31:34.7503078Z         "unit": {
2026-06-21T03:31:34.7503198Z           "complete": true,
2026-06-21T03:31:34.7503300Z           "evidence": [
2026-06-21T03:31:34.7503393Z             {
2026-06-21T03:31:34.7503525Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7503631Z               "line": 1072
2026-06-21T03:31:34.7503736Z             },
2026-06-21T03:31:34.7503835Z             {
2026-06-21T03:31:34.7503970Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7504084Z               "line": 1096
2026-06-21T03:31:34.7504179Z             }
2026-06-21T03:31:34.7504285Z           ]
2026-06-21T03:31:34.7504385Z         }
2026-06-21T03:31:34.7504484Z       }
2026-06-21T03:31:34.7504590Z     },
2026-06-21T03:31:34.7504694Z     {
2026-06-21T03:31:34.7504852Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T03:31:34.7508652Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T03:31:34.7508931Z       "requiredStages": [
2026-06-21T03:31:34.7509127Z         "impl",
2026-06-21T03:31:34.7509231Z         "unit",
2026-06-21T03:31:34.7509337Z         "int"
2026-06-21T03:31:34.7509441Z       ],
2026-06-21T03:31:34.7509541Z       "stages": {
2026-06-21T03:31:34.7509647Z         "doc": {
2026-06-21T03:31:34.7509761Z           "complete": false,
2026-06-21T03:31:34.7509870Z           "evidence": []
2026-06-21T03:31:34.7510067Z         },
2026-06-21T03:31:34.7510166Z         "impl": {
2026-06-21T03:31:34.7510276Z           "complete": true,
2026-06-21T03:31:34.7510382Z           "evidence": [
2026-06-21T03:31:34.7510486Z             {
2026-06-21T03:31:34.7510630Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7510743Z               "line": 1417
2026-06-21T03:31:34.7510853Z             },
2026-06-21T03:31:34.7510959Z             {
2026-06-21T03:31:34.7511090Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7511199Z               "line": 1441
2026-06-21T03:31:34.7511300Z             }
2026-06-21T03:31:34.7511403Z           ]
2026-06-21T03:31:34.7511507Z         },
2026-06-21T03:31:34.7511613Z         "int": {
2026-06-21T03:31:34.7511723Z           "complete": true,
2026-06-21T03:31:34.7511836Z           "evidence": [
2026-06-21T03:31:34.7511947Z             {
2026-06-21T03:31:34.7512098Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T03:31:34.7512223Z               "line": 329
2026-06-21T03:31:34.7512323Z             }
2026-06-21T03:31:34.7512427Z           ]
2026-06-21T03:31:34.7512533Z         },
2026-06-21T03:31:34.7512638Z         "unit": {
2026-06-21T03:31:34.7512756Z           "complete": true,
2026-06-21T03:31:34.7512862Z           "evidence": [
2026-06-21T03:31:34.7512971Z             {
2026-06-21T03:31:34.7513100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7513211Z               "line": 8169
2026-06-21T03:31:34.7513319Z             }
2026-06-21T03:31:34.7513420Z           ]
2026-06-21T03:31:34.7513516Z         }
2026-06-21T03:31:34.7513619Z       }
2026-06-21T03:31:34.7513725Z     },
2026-06-21T03:31:34.7513826Z     {
2026-06-21T03:31:34.7513944Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T03:31:34.7517859Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T03:31:34.7518036Z       "requiredStages": [
2026-06-21T03:31:34.7518141Z         "impl",
2026-06-21T03:31:34.7518250Z         "unit"
2026-06-21T03:31:34.7518351Z       ],
2026-06-21T03:31:34.7518580Z       "stages": {
2026-06-21T03:31:34.7518685Z         "doc": {
2026-06-21T03:31:34.7518798Z           "complete": false,
2026-06-21T03:31:34.7518899Z           "evidence": []
2026-06-21T03:31:34.7519089Z         },
2026-06-21T03:31:34.7519193Z         "impl": {
2026-06-21T03:31:34.7519303Z           "complete": true,
2026-06-21T03:31:34.7519425Z           "evidence": [
2026-06-21T03:31:34.7519529Z             {
2026-06-21T03:31:34.7519659Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7519773Z               "line": 910
2026-06-21T03:31:34.7519877Z             }
2026-06-21T03:31:34.7519979Z           ]
2026-06-21T03:31:34.7520078Z         },
2026-06-21T03:31:34.7520289Z         "int": {
2026-06-21T03:31:34.7520402Z           "complete": false,
2026-06-21T03:31:34.7520512Z           "evidence": []
2026-06-21T03:31:34.7520608Z         },
2026-06-21T03:31:34.7520713Z         "unit": {
2026-06-21T03:31:34.7520826Z           "complete": true,
2026-06-21T03:31:34.7520932Z           "evidence": [
2026-06-21T03:31:34.7521046Z             {
2026-06-21T03:31:34.7521166Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7521271Z               "line": 1112
2026-06-21T03:31:34.7521375Z             }
2026-06-21T03:31:34.7521481Z           ]
2026-06-21T03:31:34.7521586Z         }
2026-06-21T03:31:34.7521684Z       }
2026-06-21T03:31:34.7521783Z     },
2026-06-21T03:31:34.7521889Z     {
2026-06-21T03:31:34.7522025Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T03:31:34.7526607Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T03:31:34.7526796Z       "requiredStages": [
2026-06-21T03:31:34.7526900Z         "impl",
2026-06-21T03:31:34.7527000Z         "unit"
2026-06-21T03:31:34.7527099Z       ],
2026-06-21T03:31:34.7527208Z       "stages": {
2026-06-21T03:31:34.7527308Z         "doc": {
2026-06-21T03:31:34.7527423Z           "complete": false,
2026-06-21T03:31:34.7527522Z           "evidence": []
2026-06-21T03:31:34.7527628Z         },
2026-06-21T03:31:34.7527733Z         "impl": {
2026-06-21T03:31:34.7527851Z           "complete": true,
2026-06-21T03:31:34.7527962Z           "evidence": [
2026-06-21T03:31:34.7528066Z             {
2026-06-21T03:31:34.7528200Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7528300Z               "line": 264
2026-06-21T03:31:34.7528400Z             }
2026-06-21T03:31:34.7528505Z           ]
2026-06-21T03:31:34.7528606Z         },
2026-06-21T03:31:34.7528701Z         "int": {
2026-06-21T03:31:34.7528805Z           "complete": false,
2026-06-21T03:31:34.7529115Z           "evidence": []
2026-06-21T03:31:34.7529212Z         },
2026-06-21T03:31:34.7529320Z         "unit": {
2026-06-21T03:31:34.7529465Z           "complete": true,
2026-06-21T03:31:34.7529570Z           "evidence": [
2026-06-21T03:31:34.7529673Z             {
2026-06-21T03:31:34.7529801Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7529905Z               "line": 1094
2026-06-21T03:31:34.7530009Z             },
2026-06-21T03:31:34.7530113Z             {
2026-06-21T03:31:34.7530233Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7530342Z               "line": 1225
2026-06-21T03:31:34.7530452Z             },
2026-06-21T03:31:34.7530647Z             {
2026-06-21T03:31:34.7530777Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.7530891Z               "line": 1227
2026-06-21T03:31:34.7530991Z             }
2026-06-21T03:31:34.7531091Z           ]
2026-06-21T03:31:34.7531196Z         }
2026-06-21T03:31:34.7531301Z       }
2026-06-21T03:31:34.7531401Z     },
2026-06-21T03:31:34.7531502Z     {
2026-06-21T03:31:34.7531639Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T03:31:34.7531920Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T03:31:34.7532036Z       "requiredStages": [
2026-06-21T03:31:34.7532141Z         "impl",
2026-06-21T03:31:34.7532239Z         "unit"
2026-06-21T03:31:34.7532343Z       ],
2026-06-21T03:31:34.7532449Z       "stages": {
2026-06-21T03:31:34.7532552Z         "doc": {
2026-06-21T03:31:34.7532661Z           "complete": true,
2026-06-21T03:31:34.7532772Z           "evidence": [
2026-06-21T03:31:34.7532876Z             {
2026-06-21T03:31:34.7533019Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7533128Z               "line": 139
2026-06-21T03:31:34.7533233Z             }
2026-06-21T03:31:34.7533334Z           ]
2026-06-21T03:31:34.7533443Z         },
2026-06-21T03:31:34.7533548Z         "impl": {
2026-06-21T03:31:34.7533668Z           "complete": true,
2026-06-21T03:31:34.7533777Z           "evidence": [
2026-06-21T03:31:34.7533881Z             {
2026-06-21T03:31:34.7534016Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T03:31:34.7534125Z               "line": 29
2026-06-21T03:31:34.7534235Z             },
2026-06-21T03:31:34.7534331Z             {
2026-06-21T03:31:34.7534473Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.7534583Z               "line": 101
2026-06-21T03:31:34.7534684Z             },
2026-06-21T03:31:34.7534787Z             {
2026-06-21T03:31:34.7534923Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7535037Z               "line": 30
2026-06-21T03:31:34.7535144Z             },
2026-06-21T03:31:34.7535245Z             {
2026-06-21T03:31:34.7535384Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7535492Z               "line": 48
2026-06-21T03:31:34.7535597Z             }
2026-06-21T03:31:34.7535698Z           ]
2026-06-21T03:31:34.7535812Z         },
2026-06-21T03:31:34.7535918Z         "int": {
2026-06-21T03:31:34.7536032Z           "complete": false,
2026-06-21T03:31:34.7536150Z           "evidence": []
2026-06-21T03:31:34.7536256Z         },
2026-06-21T03:31:34.7536360Z         "unit": {
2026-06-21T03:31:34.7536475Z           "complete": true,
2026-06-21T03:31:34.7536581Z           "evidence": [
2026-06-21T03:31:34.7536689Z             {
2026-06-21T03:31:34.7536833Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7536938Z               "line": 162
2026-06-21T03:31:34.7537047Z             }
2026-06-21T03:31:34.7537152Z           ]
2026-06-21T03:31:34.7537262Z         }
2026-06-21T03:31:34.7537366Z       }
2026-06-21T03:31:34.7537470Z     },
2026-06-21T03:31:34.7537570Z     {
2026-06-21T03:31:34.7537707Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T03:31:34.7538121Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T03:31:34.7538374Z       "requiredStages": [
2026-06-21T03:31:34.7538485Z         "doc",
2026-06-21T03:31:34.7538589Z         "impl",
2026-06-21T03:31:34.7538698Z         "unit"
2026-06-21T03:31:34.7538799Z       ],
2026-06-21T03:31:34.7538908Z       "stages": {
2026-06-21T03:31:34.7539089Z         "doc": {
2026-06-21T03:31:34.7539208Z           "complete": true,
2026-06-21T03:31:34.7539318Z           "evidence": [
2026-06-21T03:31:34.7539434Z             {
2026-06-21T03:31:34.7539556Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7539661Z               "line": 151
2026-06-21T03:31:34.7539768Z             }
2026-06-21T03:31:34.7540209Z           ]
2026-06-21T03:31:34.7540318Z         },
2026-06-21T03:31:34.7540428Z         "impl": {
2026-06-21T03:31:34.7540545Z           "complete": true,
2026-06-21T03:31:34.7540654Z           "evidence": [
2026-06-21T03:31:34.7540760Z             {
2026-06-21T03:31:34.7540902Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7541022Z               "line": 22
2026-06-21T03:31:34.7541118Z             }
2026-06-21T03:31:34.7541222Z           ]
2026-06-21T03:31:34.7541322Z         },
2026-06-21T03:31:34.7541423Z         "int": {
2026-06-21T03:31:34.7541527Z           "complete": false,
2026-06-21T03:31:34.7541628Z           "evidence": []
2026-06-21T03:31:34.7541728Z         },
2026-06-21T03:31:34.7541833Z         "unit": {
2026-06-21T03:31:34.7541942Z           "complete": true,
2026-06-21T03:31:34.7542047Z           "evidence": [
2026-06-21T03:31:34.7542156Z             {
2026-06-21T03:31:34.7542291Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7542400Z               "line": 298
2026-06-21T03:31:34.7542490Z             }
2026-06-21T03:31:34.7542601Z           ]
2026-06-21T03:31:34.7542696Z         }
2026-06-21T03:31:34.7542809Z       }
2026-06-21T03:31:34.7542913Z     },
2026-06-21T03:31:34.7543004Z     {
2026-06-21T03:31:34.7543149Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T03:31:34.7543618Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T03:31:34.7543737Z       "requiredStages": [
2026-06-21T03:31:34.7543841Z         "impl",
2026-06-21T03:31:34.7543937Z         "unit"
2026-06-21T03:31:34.7544047Z       ],
2026-06-21T03:31:34.7544150Z       "stages": {
2026-06-21T03:31:34.7544252Z         "doc": {
2026-06-21T03:31:34.7544365Z           "complete": true,
2026-06-21T03:31:34.7544480Z           "evidence": [
2026-06-21T03:31:34.7544581Z             {
2026-06-21T03:31:34.7544709Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7544833Z               "line": 145
2026-06-21T03:31:34.7544934Z             }
2026-06-21T03:31:34.7545038Z           ]
2026-06-21T03:31:34.7545134Z         },
2026-06-21T03:31:34.7545235Z         "impl": {
2026-06-21T03:31:34.7545342Z           "complete": true,
2026-06-21T03:31:34.7545449Z           "evidence": [
2026-06-21T03:31:34.7545559Z             {
2026-06-21T03:31:34.7545714Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:31:34.7545824Z               "line": 160
2026-06-21T03:31:34.7545930Z             },
2026-06-21T03:31:34.7546033Z             {
2026-06-21T03:31:34.7546187Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7546292Z               "line": 200
2026-06-21T03:31:34.7546400Z             },
2026-06-21T03:31:34.7546497Z             {
2026-06-21T03:31:34.7546649Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7546763Z               "line": 298
2026-06-21T03:31:34.7546878Z             },
2026-06-21T03:31:34.7546977Z             {
2026-06-21T03:31:34.7547112Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:31:34.7547221Z               "line": 20
2026-06-21T03:31:34.7547311Z             }
2026-06-21T03:31:34.7547417Z           ]
2026-06-21T03:31:34.7547522Z         },
2026-06-21T03:31:34.7547717Z         "int": {
2026-06-21T03:31:34.7547837Z           "complete": false,
2026-06-21T03:31:34.7547954Z           "evidence": []
2026-06-21T03:31:34.7548064Z         },
2026-06-21T03:31:34.7548163Z         "unit": {
2026-06-21T03:31:34.7548281Z           "complete": true,
2026-06-21T03:31:34.7548385Z           "evidence": [
2026-06-21T03:31:34.7548492Z             {
2026-06-21T03:31:34.7548643Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7548749Z               "line": 937
2026-06-21T03:31:34.7548858Z             },
2026-06-21T03:31:34.7549025Z             {
2026-06-21T03:31:34.7549182Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T03:31:34.7549425Z               "line": 88
2026-06-21T03:31:34.7549530Z             },
2026-06-21T03:31:34.7549635Z             {
2026-06-21T03:31:34.7549787Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7549902Z               "line": 851
2026-06-21T03:31:34.7550003Z             },
2026-06-21T03:31:34.7550107Z             {
2026-06-21T03:31:34.7550240Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7550356Z               "line": 870
2026-06-21T03:31:34.7550459Z             },
2026-06-21T03:31:34.7550560Z             {
2026-06-21T03:31:34.7550713Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7550817Z               "line": 279
2026-06-21T03:31:34.7550926Z             },
2026-06-21T03:31:34.7551026Z             {
2026-06-21T03:31:34.7551167Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:31:34.7551282Z               "line": 82
2026-06-21T03:31:34.7551396Z             },
2026-06-21T03:31:34.7551500Z             {
2026-06-21T03:31:34.7551635Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:31:34.7551744Z               "line": 99
2026-06-21T03:31:34.7551848Z             },
2026-06-21T03:31:34.7551945Z             {
2026-06-21T03:31:34.7552087Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:31:34.7552188Z               "line": 119
2026-06-21T03:31:34.7552298Z             }
2026-06-21T03:31:34.7552402Z           ]
2026-06-21T03:31:34.7552507Z         }
2026-06-21T03:31:34.7552612Z       }
2026-06-21T03:31:34.7552716Z     },
2026-06-21T03:31:34.7552822Z     {
2026-06-21T03:31:34.7552956Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T03:31:34.7554297Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T03:31:34.7554420Z       "requiredStages": [
2026-06-21T03:31:34.7554521Z         "doc",
2026-06-21T03:31:34.7554631Z         "impl",
2026-06-21T03:31:34.7554735Z         "unit"
2026-06-21T03:31:34.7554841Z       ],
2026-06-21T03:31:34.7554945Z       "stages": {
2026-06-21T03:31:34.7555055Z         "doc": {
2026-06-21T03:31:34.7555174Z           "complete": true,
2026-06-21T03:31:34.7555279Z           "evidence": [
2026-06-21T03:31:34.7555384Z             {
2026-06-21T03:31:34.7555517Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7555627Z               "line": 157
2026-06-21T03:31:34.7555728Z             }
2026-06-21T03:31:34.7555837Z           ]
2026-06-21T03:31:34.7555942Z         },
2026-06-21T03:31:34.7556043Z         "impl": {
2026-06-21T03:31:34.7556161Z           "complete": true,
2026-06-21T03:31:34.7556279Z           "evidence": [
2026-06-21T03:31:34.7556394Z             {
2026-06-21T03:31:34.7556556Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.7556674Z               "line": 137
2026-06-21T03:31:34.7556781Z             },
2026-06-21T03:31:34.7556889Z             {
2026-06-21T03:31:34.7557162Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7557270Z               "line": 564
2026-06-21T03:31:34.7557381Z             },
2026-06-21T03:31:34.7557480Z             {
2026-06-21T03:31:34.7557643Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7557758Z               "line": 571
2026-06-21T03:31:34.7557867Z             },
2026-06-21T03:31:34.7557973Z             {
2026-06-21T03:31:34.7558124Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7558239Z               "line": 227
2026-06-21T03:31:34.7558345Z             }
2026-06-21T03:31:34.7558448Z           ]
2026-06-21T03:31:34.7558624Z         },
2026-06-21T03:31:34.7558733Z         "int": {
2026-06-21T03:31:34.7558855Z           "complete": false,
2026-06-21T03:31:34.7559042Z           "evidence": []
2026-06-21T03:31:34.7559150Z         },
2026-06-21T03:31:34.7559256Z         "unit": {
2026-06-21T03:31:34.7559375Z           "complete": true,
2026-06-21T03:31:34.7559489Z           "evidence": [
2026-06-21T03:31:34.7559600Z             {
2026-06-21T03:31:34.7559761Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7559871Z               "line": 1622
2026-06-21T03:31:34.7559981Z             },
2026-06-21T03:31:34.7560085Z             {
2026-06-21T03:31:34.7560239Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7560357Z               "line": 1680
2026-06-21T03:31:34.7560457Z             },
2026-06-21T03:31:34.7560563Z             {
2026-06-21T03:31:34.7560715Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7560835Z               "line": 883
2026-06-21T03:31:34.7560940Z             }
2026-06-21T03:31:34.7561039Z           ]
2026-06-21T03:31:34.7561145Z         }
2026-06-21T03:31:34.7561241Z       }
2026-06-21T03:31:34.7561353Z     },
2026-06-21T03:31:34.7561447Z     {
2026-06-21T03:31:34.7561591Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T03:31:34.7561818Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T03:31:34.7561938Z       "requiredStages": [
2026-06-21T03:31:34.7562051Z         "impl",
2026-06-21T03:31:34.7562157Z         "unit"
2026-06-21T03:31:34.7562257Z       ],
2026-06-21T03:31:34.7562356Z       "stages": {
2026-06-21T03:31:34.7562467Z         "doc": {
2026-06-21T03:31:34.7562581Z           "complete": false,
2026-06-21T03:31:34.7562700Z           "evidence": []
2026-06-21T03:31:34.7562801Z         },
2026-06-21T03:31:34.7562905Z         "impl": {
2026-06-21T03:31:34.7563033Z           "complete": true,
2026-06-21T03:31:34.7563135Z           "evidence": [
2026-06-21T03:31:34.7563243Z             {
2026-06-21T03:31:34.7563387Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7563497Z               "line": 15
2026-06-21T03:31:34.7563596Z             },
2026-06-21T03:31:34.7563692Z             {
2026-06-21T03:31:34.7563835Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7563948Z               "line": 55
2026-06-21T03:31:34.7564053Z             },
2026-06-21T03:31:34.7564152Z             {
2026-06-21T03:31:34.7564293Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7564404Z               "line": 66
2026-06-21T03:31:34.7564509Z             },
2026-06-21T03:31:34.7564618Z             {
2026-06-21T03:31:34.7564747Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7564857Z               "line": 115
2026-06-21T03:31:34.7564966Z             },
2026-06-21T03:31:34.7565076Z             {
2026-06-21T03:31:34.7565223Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7565329Z               "line": 138
2026-06-21T03:31:34.7565439Z             }
2026-06-21T03:31:34.7565543Z           ]
2026-06-21T03:31:34.7565653Z         },
2026-06-21T03:31:34.7565758Z         "int": {
2026-06-21T03:31:34.7565882Z           "complete": false,
2026-06-21T03:31:34.7565998Z           "evidence": []
2026-06-21T03:31:34.7566201Z         },
2026-06-21T03:31:34.7566307Z         "unit": {
2026-06-21T03:31:34.7566416Z           "complete": true,
2026-06-21T03:31:34.7566526Z           "evidence": [
2026-06-21T03:31:34.7566627Z             {
2026-06-21T03:31:34.7566773Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7566877Z               "line": 363
2026-06-21T03:31:34.7566973Z             },
2026-06-21T03:31:34.7567078Z             {
2026-06-21T03:31:34.7567216Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7567317Z               "line": 369
2026-06-21T03:31:34.7567417Z             },
2026-06-21T03:31:34.7567617Z             {
2026-06-21T03:31:34.7567764Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7567864Z               "line": 383
2026-06-21T03:31:34.7567965Z             },
2026-06-21T03:31:34.7568065Z             {
2026-06-21T03:31:34.7568203Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7568313Z               "line": 392
2026-06-21T03:31:34.7568422Z             },
2026-06-21T03:31:34.7568523Z             {
2026-06-21T03:31:34.7568666Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7568770Z               "line": 195
2026-06-21T03:31:34.7568876Z             },
2026-06-21T03:31:34.7569074Z             {
2026-06-21T03:31:34.7569212Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7569326Z               "line": 208
2026-06-21T03:31:34.7569458Z             },
2026-06-21T03:31:34.7569559Z             {
2026-06-21T03:31:34.7569701Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7569811Z               "line": 271
2026-06-21T03:31:34.7569916Z             },
2026-06-21T03:31:34.7570016Z             {
2026-06-21T03:31:34.7570160Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7570279Z               "line": 290
2026-06-21T03:31:34.7570383Z             },
2026-06-21T03:31:34.7570499Z             {
2026-06-21T03:31:34.7570641Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7570750Z               "line": 319
2026-06-21T03:31:34.7570856Z             }
2026-06-21T03:31:34.7570956Z           ]
2026-06-21T03:31:34.7571051Z         }
2026-06-21T03:31:34.7571147Z       }
2026-06-21T03:31:34.7571255Z     },
2026-06-21T03:31:34.7571346Z     {
2026-06-21T03:31:34.7571491Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T03:31:34.7571782Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T03:31:34.7571899Z       "requiredStages": [
2026-06-21T03:31:34.7572012Z         "impl",
2026-06-21T03:31:34.7572118Z         "unit",
2026-06-21T03:31:34.7572221Z         "int"
2026-06-21T03:31:34.7572316Z       ],
2026-06-21T03:31:34.7572431Z       "stages": {
2026-06-21T03:31:34.7572536Z         "doc": {
2026-06-21T03:31:34.7572644Z           "complete": false,
2026-06-21T03:31:34.7572746Z           "evidence": []
2026-06-21T03:31:34.7572846Z         },
2026-06-21T03:31:34.7572955Z         "impl": {
2026-06-21T03:31:34.7573070Z           "complete": true,
2026-06-21T03:31:34.7573184Z           "evidence": [
2026-06-21T03:31:34.7573288Z             {
2026-06-21T03:31:34.7573436Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7573546Z               "line": 474
2026-06-21T03:31:34.7573652Z             },
2026-06-21T03:31:34.7573756Z             {
2026-06-21T03:31:34.7573899Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7574010Z               "line": 916
2026-06-21T03:31:34.7574113Z             },
2026-06-21T03:31:34.7574223Z             {
2026-06-21T03:31:34.7574358Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7574456Z               "line": 961
2026-06-21T03:31:34.7574560Z             },
2026-06-21T03:31:34.7574666Z             {
2026-06-21T03:31:34.7574811Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.7575036Z               "line": 986
2026-06-21T03:31:34.7575145Z             },
2026-06-21T03:31:34.7575250Z             {
2026-06-21T03:31:34.7575384Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7575488Z               "line": 1626
2026-06-21T03:31:34.7575594Z             },
2026-06-21T03:31:34.7575698Z             {
2026-06-21T03:31:34.7575845Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7575961Z               "line": 1871
2026-06-21T03:31:34.7576070Z             },
2026-06-21T03:31:34.7576160Z             {
2026-06-21T03:31:34.7576308Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7576504Z               "line": 2002
2026-06-21T03:31:34.7576609Z             },
2026-06-21T03:31:34.7576713Z             {
2026-06-21T03:31:34.7576858Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7576962Z               "line": 2050
2026-06-21T03:31:34.7577067Z             },
2026-06-21T03:31:34.7577177Z             {
2026-06-21T03:31:34.7577314Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7577427Z               "line": 46
2026-06-21T03:31:34.7577529Z             },
2026-06-21T03:31:34.7577629Z             {
2026-06-21T03:31:34.7577756Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7577867Z               "line": 200
2026-06-21T03:31:34.7577972Z             },
2026-06-21T03:31:34.7578076Z             {
2026-06-21T03:31:34.7578215Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.7578329Z               "line": 132
2026-06-21T03:31:34.7578430Z             },
2026-06-21T03:31:34.7578539Z             {
2026-06-21T03:31:34.7578677Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7578788Z               "line": 137
2026-06-21T03:31:34.7578887Z             },
2026-06-21T03:31:34.7579073Z             {
2026-06-21T03:31:34.7579216Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7579330Z               "line": 183
2026-06-21T03:31:34.7579442Z             }
2026-06-21T03:31:34.7579549Z           ]
2026-06-21T03:31:34.7579654Z         },
2026-06-21T03:31:34.7579763Z         "int": {
2026-06-21T03:31:34.7579876Z           "complete": true,
2026-06-21T03:31:34.7579989Z           "evidence": [
2026-06-21T03:31:34.7580090Z             {
2026-06-21T03:31:34.7580252Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T03:31:34.7580357Z               "line": 27
2026-06-21T03:31:34.7580463Z             },
2026-06-21T03:31:34.7580567Z             {
2026-06-21T03:31:34.7580715Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:31:34.7580834Z               "line": 148
2026-06-21T03:31:34.7580933Z             },
2026-06-21T03:31:34.7581044Z             {
2026-06-21T03:31:34.7581192Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T03:31:34.7581301Z               "line": 200
2026-06-21T03:31:34.7581412Z             }
2026-06-21T03:31:34.7581521Z           ]
2026-06-21T03:31:34.7581621Z         },
2026-06-21T03:31:34.7581722Z         "unit": {
2026-06-21T03:31:34.7581830Z           "complete": true,
2026-06-21T03:31:34.7581940Z           "evidence": [
2026-06-21T03:31:34.7582051Z             {
2026-06-21T03:31:34.7582202Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7582309Z               "line": 366
2026-06-21T03:31:34.7582417Z             },
2026-06-21T03:31:34.7582521Z             {
2026-06-21T03:31:34.7582664Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7582772Z               "line": 398
2026-06-21T03:31:34.7582876Z             },
2026-06-21T03:31:34.7582981Z             {
2026-06-21T03:31:34.7583119Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:31:34.7583243Z               "line": 419
2026-06-21T03:31:34.7583344Z             },
2026-06-21T03:31:34.7583453Z             {
2026-06-21T03:31:34.7583587Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7583810Z               "line": 628
2026-06-21T03:31:34.7583916Z             },
2026-06-21T03:31:34.7584020Z             {
2026-06-21T03:31:34.7584164Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:31:34.7584265Z               "line": 289
2026-06-21T03:31:34.7584368Z             },
2026-06-21T03:31:34.7584464Z             {
2026-06-21T03:31:34.7584613Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:31:34.7584721Z               "line": 230
2026-06-21T03:31:34.7584822Z             },
2026-06-21T03:31:34.7584932Z             {
2026-06-21T03:31:34.7585069Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7585273Z               "line": 526
2026-06-21T03:31:34.7585376Z             },
2026-06-21T03:31:34.7585486Z             {
2026-06-21T03:31:34.7585630Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.7585738Z               "line": 556
2026-06-21T03:31:34.7585844Z             }
2026-06-21T03:31:34.7585949Z           ]
2026-06-21T03:31:34.7586062Z         }
2026-06-21T03:31:34.7586159Z       }
2026-06-21T03:31:34.7586268Z     },
2026-06-21T03:31:34.7586377Z     {
2026-06-21T03:31:34.7586521Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T03:31:34.7588264Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T03:31:34.7588394Z       "requiredStages": [
2026-06-21T03:31:34.7588494Z         "doc",
2026-06-21T03:31:34.7588593Z         "impl",
2026-06-21T03:31:34.7588709Z         "unit"
2026-06-21T03:31:34.7588813Z       ],
2026-06-21T03:31:34.7588918Z       "stages": {
2026-06-21T03:31:34.7589114Z         "doc": {
2026-06-21T03:31:34.7589227Z           "complete": true,
2026-06-21T03:31:34.7589333Z           "evidence": [
2026-06-21T03:31:34.7589452Z             {
2026-06-21T03:31:34.7589581Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7589696Z               "line": 314
2026-06-21T03:31:34.7589795Z             }
2026-06-21T03:31:34.7589895Z           ]
2026-06-21T03:31:34.7589997Z         },
2026-06-21T03:31:34.7590105Z         "impl": {
2026-06-21T03:31:34.7590223Z           "complete": true,
2026-06-21T03:31:34.7590333Z           "evidence": [
2026-06-21T03:31:34.7590436Z             {
2026-06-21T03:31:34.7590593Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:31:34.7590708Z               "line": 33
2026-06-21T03:31:34.7590813Z             },
2026-06-21T03:31:34.7590917Z             {
2026-06-21T03:31:34.7591075Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:31:34.7591193Z               "line": 39
2026-06-21T03:31:34.7591299Z             }
2026-06-21T03:31:34.7591399Z           ]
2026-06-21T03:31:34.7591503Z         },
2026-06-21T03:31:34.7591609Z         "int": {
2026-06-21T03:31:34.7591728Z           "complete": false,
2026-06-21T03:31:34.7594548Z           "evidence": []
2026-06-21T03:31:34.7594685Z         },
2026-06-21T03:31:34.7594796Z         "unit": {
2026-06-21T03:31:34.7594914Z           "complete": true,
2026-06-21T03:31:34.7595024Z           "evidence": [
2026-06-21T03:31:34.7595130Z             {
2026-06-21T03:31:34.7595315Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:31:34.7595431Z               "line": 95
2026-06-21T03:31:34.7595525Z             }
2026-06-21T03:31:34.7595633Z           ]
2026-06-21T03:31:34.7595738Z         }
2026-06-21T03:31:34.7595838Z       }
2026-06-21T03:31:34.7595941Z     },
2026-06-21T03:31:34.7596181Z     {
2026-06-21T03:31:34.7596322Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T03:31:34.7598848Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T03:31:34.7599182Z       "requiredStages": [
2026-06-21T03:31:34.7599298Z         "impl",
2026-06-21T03:31:34.7599398Z         "unit"
2026-06-21T03:31:34.7599497Z       ],
2026-06-21T03:31:34.7599598Z       "stages": {
2026-06-21T03:31:34.7599698Z         "doc": {
2026-06-21T03:31:34.7599816Z           "complete": false,
2026-06-21T03:31:34.7599918Z           "evidence": []
2026-06-21T03:31:34.7600017Z         },
2026-06-21T03:31:34.7600122Z         "impl": {
2026-06-21T03:31:34.7600237Z           "complete": true,
2026-06-21T03:31:34.7600341Z           "evidence": [
2026-06-21T03:31:34.7600446Z             {
2026-06-21T03:31:34.7600613Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7600731Z               "line": 488
2026-06-21T03:31:34.7600840Z             }
2026-06-21T03:31:34.7600945Z           ]
2026-06-21T03:31:34.7601048Z         },
2026-06-21T03:31:34.7601153Z         "int": {
2026-06-21T03:31:34.7601254Z           "complete": false,
2026-06-21T03:31:34.7601363Z           "evidence": []
2026-06-21T03:31:34.7601468Z         },
2026-06-21T03:31:34.7601569Z         "unit": {
2026-06-21T03:31:34.7601678Z           "complete": true,
2026-06-21T03:31:34.7601782Z           "evidence": [
2026-06-21T03:31:34.7601888Z             {
2026-06-21T03:31:34.7602040Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7602151Z               "line": 1466
2026-06-21T03:31:34.7602250Z             }
2026-06-21T03:31:34.7602359Z           ]
2026-06-21T03:31:34.7602465Z         }
2026-06-21T03:31:34.7602569Z       }
2026-06-21T03:31:34.7602669Z     },
2026-06-21T03:31:34.7602775Z     {
2026-06-21T03:31:34.7602908Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T03:31:34.7605094Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T03:31:34.7605227Z       "requiredStages": [
2026-06-21T03:31:34.7605337Z         "unit"
2026-06-21T03:31:34.7605437Z       ],
2026-06-21T03:31:34.7605556Z       "stages": {
2026-06-21T03:31:34.7605657Z         "doc": {
2026-06-21T03:31:34.7605780Z           "complete": false,
2026-06-21T03:31:34.7605903Z           "evidence": []
2026-06-21T03:31:34.7606010Z         },
2026-06-21T03:31:34.7606118Z         "impl": {
2026-06-21T03:31:34.7606231Z           "complete": true,
2026-06-21T03:31:34.7606341Z           "evidence": [
2026-06-21T03:31:34.7606445Z             {
2026-06-21T03:31:34.7606582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7606806Z               "line": 3520
2026-06-21T03:31:34.7606911Z             },
2026-06-21T03:31:34.7607022Z             {
2026-06-21T03:31:34.7607144Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7607260Z               "line": 3572
2026-06-21T03:31:34.7607364Z             },
2026-06-21T03:31:34.7607464Z             {
2026-06-21T03:31:34.7607594Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7607702Z               "line": 3617
2026-06-21T03:31:34.7607802Z             },
2026-06-21T03:31:34.7607904Z             {
2026-06-21T03:31:34.7608061Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7608295Z               "line": 92
2026-06-21T03:31:34.7608404Z             },
2026-06-21T03:31:34.7608514Z             {
2026-06-21T03:31:34.7608652Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7608766Z               "line": 148
2026-06-21T03:31:34.7608863Z             },
2026-06-21T03:31:34.7609032Z             {
2026-06-21T03:31:34.7609161Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7609271Z               "line": 192
2026-06-21T03:31:34.7609399Z             },
2026-06-21T03:31:34.7609500Z             {
2026-06-21T03:31:34.7609634Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7609742Z               "line": 200
2026-06-21T03:31:34.7609848Z             },
2026-06-21T03:31:34.7609953Z             {
2026-06-21T03:31:34.7610081Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7610201Z               "line": 211
2026-06-21T03:31:34.7610301Z             },
2026-06-21T03:31:34.7610414Z             {
2026-06-21T03:31:34.7610535Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7610648Z               "line": 265
2026-06-21T03:31:34.7610739Z             },
2026-06-21T03:31:34.7610845Z             {
2026-06-21T03:31:34.7610972Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7611088Z               "line": 279
2026-06-21T03:31:34.7611193Z             }
2026-06-21T03:31:34.7611296Z           ]
2026-06-21T03:31:34.7611401Z         },
2026-06-21T03:31:34.7611505Z         "int": {
2026-06-21T03:31:34.7611623Z           "complete": false,
2026-06-21T03:31:34.7611727Z           "evidence": []
2026-06-21T03:31:34.7611828Z         },
2026-06-21T03:31:34.7611942Z         "unit": {
2026-06-21T03:31:34.7612056Z           "complete": true,
2026-06-21T03:31:34.7612171Z           "evidence": [
2026-06-21T03:31:34.7612276Z             {
2026-06-21T03:31:34.7612411Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7612529Z               "line": 419
2026-06-21T03:31:34.7612628Z             },
2026-06-21T03:31:34.7612735Z             {
2026-06-21T03:31:34.7612862Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7612972Z               "line": 470
2026-06-21T03:31:34.7613078Z             },
2026-06-21T03:31:34.7613187Z             {
2026-06-21T03:31:34.7613321Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7613425Z               "line": 499
2026-06-21T03:31:34.7613530Z             },
2026-06-21T03:31:34.7613636Z             {
2026-06-21T03:31:34.7613768Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7613878Z               "line": 526
2026-06-21T03:31:34.7613984Z             }
2026-06-21T03:31:34.7614088Z           ]
2026-06-21T03:31:34.7614192Z         }
2026-06-21T03:31:34.7614291Z       }
2026-06-21T03:31:34.7614396Z     },
2026-06-21T03:31:34.7614500Z     {
2026-06-21T03:31:34.7614638Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T03:31:34.7614861Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T03:31:34.7614977Z       "requiredStages": [
2026-06-21T03:31:34.7615086Z         "impl",
2026-06-21T03:31:34.7615195Z         "unit"
2026-06-21T03:31:34.7615296Z       ],
2026-06-21T03:31:34.7615401Z       "stages": {
2026-06-21T03:31:34.7615607Z         "doc": {
2026-06-21T03:31:34.7615725Z           "complete": false,
2026-06-21T03:31:34.7615829Z           "evidence": []
2026-06-21T03:31:34.7615931Z         },
2026-06-21T03:31:34.7616030Z         "impl": {
2026-06-21T03:31:34.7616139Z           "complete": true,
2026-06-21T03:31:34.7616250Z           "evidence": [
2026-06-21T03:31:34.7616354Z             {
2026-06-21T03:31:34.7616517Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7616632Z               "line": 62
2026-06-21T03:31:34.7616734Z             },
2026-06-21T03:31:34.7616839Z             {
2026-06-21T03:31:34.7616991Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7617205Z               "line": 71
2026-06-21T03:31:34.7617315Z             },
2026-06-21T03:31:34.7617423Z             {
2026-06-21T03:31:34.7617577Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7617672Z               "line": 80
2026-06-21T03:31:34.7617772Z             },
2026-06-21T03:31:34.7617873Z             {
2026-06-21T03:31:34.7618029Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7618135Z               "line": 88
2026-06-21T03:31:34.7618235Z             },
2026-06-21T03:31:34.7618335Z             {
2026-06-21T03:31:34.7618464Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7618573Z               "line": 33
2026-06-21T03:31:34.7618677Z             },
2026-06-21T03:31:34.7618784Z             {
2026-06-21T03:31:34.7618925Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7619122Z               "line": 65
2026-06-21T03:31:34.7619226Z             },
2026-06-21T03:31:34.7619331Z             {
2026-06-21T03:31:34.7619494Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7619602Z               "line": 74
2026-06-21T03:31:34.7619706Z             },
2026-06-21T03:31:34.7619808Z             {
2026-06-21T03:31:34.7619944Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7620050Z               "line": 93
2026-06-21T03:31:34.7620155Z             },
2026-06-21T03:31:34.7620259Z             {
2026-06-21T03:31:34.7620394Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7620498Z               "line": 102
2026-06-21T03:31:34.7620602Z             },
2026-06-21T03:31:34.7620704Z             {
2026-06-21T03:31:34.7620841Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7620951Z               "line": 111
2026-06-21T03:31:34.7621052Z             },
2026-06-21T03:31:34.7621146Z             {
2026-06-21T03:31:34.7621280Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7621401Z               "line": 122
2026-06-21T03:31:34.7621499Z             },
2026-06-21T03:31:34.7621605Z             {
2026-06-21T03:31:34.7621734Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7621847Z               "line": 140
2026-06-21T03:31:34.7621951Z             },
2026-06-21T03:31:34.7622061Z             {
2026-06-21T03:31:34.7622202Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7622306Z               "line": 149
2026-06-21T03:31:34.7622413Z             },
2026-06-21T03:31:34.7622511Z             {
2026-06-21T03:31:34.7622645Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7622741Z               "line": 158
2026-06-21T03:31:34.7622845Z             },
2026-06-21T03:31:34.7622951Z             {
2026-06-21T03:31:34.7623075Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7623189Z               "line": 169
2026-06-21T03:31:34.7623280Z             },
2026-06-21T03:31:34.7623389Z             {
2026-06-21T03:31:34.7623527Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7623638Z               "line": 177
2026-06-21T03:31:34.7623742Z             },
2026-06-21T03:31:34.7623847Z             {
2026-06-21T03:31:34.7623986Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7624196Z               "line": 186
2026-06-21T03:31:34.7624305Z             },
2026-06-21T03:31:34.7624409Z             {
2026-06-21T03:31:34.7624559Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7624671Z               "line": 195
2026-06-21T03:31:34.7624771Z             },
2026-06-21T03:31:34.7624876Z             {
2026-06-21T03:31:34.7625012Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7625121Z               "line": 204
2026-06-21T03:31:34.7625227Z             },
2026-06-21T03:31:34.7625327Z             {
2026-06-21T03:31:34.7625464Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7625656Z               "line": 216
2026-06-21T03:31:34.7625764Z             },
2026-06-21T03:31:34.7625871Z             {
2026-06-21T03:31:34.7625999Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7626114Z               "line": 223
2026-06-21T03:31:34.7626237Z             },
2026-06-21T03:31:34.7626347Z             {
2026-06-21T03:31:34.7626482Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7626590Z               "line": 232
2026-06-21T03:31:34.7626695Z             },
2026-06-21T03:31:34.7626843Z             {
2026-06-21T03:31:34.7626976Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7627092Z               "line": 239
2026-06-21T03:31:34.7627201Z             },
2026-06-21T03:31:34.7627309Z             {
2026-06-21T03:31:34.7627457Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7627569Z               "line": 306
2026-06-21T03:31:34.7627683Z             },
2026-06-21T03:31:34.7627788Z             {
2026-06-21T03:31:34.7627932Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7628041Z               "line": 318
2026-06-21T03:31:34.7628137Z             },
2026-06-21T03:31:34.7628246Z             {
2026-06-21T03:31:34.7628375Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7628490Z               "line": 405
2026-06-21T03:31:34.7628594Z             }
2026-06-21T03:31:34.7628700Z           ]
2026-06-21T03:31:34.7628804Z         },
2026-06-21T03:31:34.7628909Z         "int": {
2026-06-21T03:31:34.7629114Z           "complete": false,
2026-06-21T03:31:34.7629214Z           "evidence": []
2026-06-21T03:31:34.7629319Z         },
2026-06-21T03:31:34.7629443Z         "unit": {
2026-06-21T03:31:34.7629557Z           "complete": true,
2026-06-21T03:31:34.7629659Z           "evidence": [
2026-06-21T03:31:34.7629763Z             {
2026-06-21T03:31:34.7629910Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7630011Z               "line": 487
2026-06-21T03:31:34.7630115Z             },
2026-06-21T03:31:34.7630223Z             {
2026-06-21T03:31:34.7630358Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7630467Z               "line": 528
2026-06-21T03:31:34.7630572Z             },
2026-06-21T03:31:34.7630678Z             {
2026-06-21T03:31:34.7630810Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7630915Z               "line": 541
2026-06-21T03:31:34.7631021Z             },
2026-06-21T03:31:34.7631125Z             {
2026-06-21T03:31:34.7631269Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7631378Z               "line": 627
2026-06-21T03:31:34.7631482Z             }
2026-06-21T03:31:34.7631584Z           ]
2026-06-21T03:31:34.7631688Z         }
2026-06-21T03:31:34.7631783Z       }
2026-06-21T03:31:34.7631884Z     },
2026-06-21T03:31:34.7631984Z     {
2026-06-21T03:31:34.7632112Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T03:31:34.7632336Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T03:31:34.7632455Z       "requiredStages": [
2026-06-21T03:31:34.7632564Z         "impl",
2026-06-21T03:31:34.7632663Z         "unit"
2026-06-21T03:31:34.7632762Z       ],
2026-06-21T03:31:34.7632862Z       "stages": {
2026-06-21T03:31:34.7633062Z         "doc": {
2026-06-21T03:31:34.7633187Z           "complete": false,
2026-06-21T03:31:34.7633296Z           "evidence": []
2026-06-21T03:31:34.7633405Z         },
2026-06-21T03:31:34.7633511Z         "impl": {
2026-06-21T03:31:34.7633625Z           "complete": true,
2026-06-21T03:31:34.7633729Z           "evidence": [
2026-06-21T03:31:34.7633836Z             {
2026-06-21T03:31:34.7633983Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.7634087Z               "line": 175
2026-06-21T03:31:34.7634198Z             },
2026-06-21T03:31:34.7634303Z             {
2026-06-21T03:31:34.7634451Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.7634655Z               "line": 171
2026-06-21T03:31:34.7634751Z             }
2026-06-21T03:31:34.7634852Z           ]
2026-06-21T03:31:34.7634955Z         },
2026-06-21T03:31:34.7635056Z         "int": {
2026-06-21T03:31:34.7635176Z           "complete": false,
2026-06-21T03:31:34.7635288Z           "evidence": []
2026-06-21T03:31:34.7635398Z         },
2026-06-21T03:31:34.7635502Z         "unit": {
2026-06-21T03:31:34.7635605Z           "complete": true,
2026-06-21T03:31:34.7635720Z           "evidence": [
2026-06-21T03:31:34.7635825Z             {
2026-06-21T03:31:34.7635958Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.7636063Z               "line": 297
2026-06-21T03:31:34.7636168Z             },
2026-06-21T03:31:34.7636277Z             {
2026-06-21T03:31:34.7636468Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.7636577Z               "line": 836
2026-06-21T03:31:34.7636688Z             },
2026-06-21T03:31:34.7636788Z             {
2026-06-21T03:31:34.7636931Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.7637037Z               "line": 849
2026-06-21T03:31:34.7637136Z             }
2026-06-21T03:31:34.7637236Z           ]
2026-06-21T03:31:34.7637337Z         }
2026-06-21T03:31:34.7637451Z       }
2026-06-21T03:31:34.7637556Z     },
2026-06-21T03:31:34.7637661Z     {
2026-06-21T03:31:34.7637789Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T03:31:34.7637940Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T03:31:34.7638059Z       "requiredStages": [
2026-06-21T03:31:34.7638167Z         "impl",
2026-06-21T03:31:34.7638277Z         "unit"
2026-06-21T03:31:34.7638387Z       ],
2026-06-21T03:31:34.7638492Z       "stages": {
2026-06-21T03:31:34.7638601Z         "doc": {
2026-06-21T03:31:34.7638716Z           "complete": false,
2026-06-21T03:31:34.7638825Z           "evidence": []
2026-06-21T03:31:34.7638925Z         },
2026-06-21T03:31:34.7639097Z         "impl": {
2026-06-21T03:31:34.7639221Z           "complete": true,
2026-06-21T03:31:34.7639331Z           "evidence": [
2026-06-21T03:31:34.7639431Z             {
2026-06-21T03:31:34.7639579Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7639684Z               "line": 116
2026-06-21T03:31:34.7639779Z             },
2026-06-21T03:31:34.7639884Z             {
2026-06-21T03:31:34.7640027Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.7640137Z               "line": 507
2026-06-21T03:31:34.7640238Z             }
2026-06-21T03:31:34.7640341Z           ]
2026-06-21T03:31:34.7640447Z         },
2026-06-21T03:31:34.7640548Z         "int": {
2026-06-21T03:31:34.7640675Z           "complete": false,
2026-06-21T03:31:34.7640779Z           "evidence": []
2026-06-21T03:31:34.7640875Z         },
2026-06-21T03:31:34.7640981Z         "unit": {
2026-06-21T03:31:34.7641088Z           "complete": true,
2026-06-21T03:31:34.7641204Z           "evidence": [
2026-06-21T03:31:34.7641304Z             {
2026-06-21T03:31:34.7641456Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.7641572Z               "line": 541
2026-06-21T03:31:34.7641676Z             }
2026-06-21T03:31:34.7641776Z           ]
2026-06-21T03:31:34.7641872Z         }
2026-06-21T03:31:34.7641976Z       }
2026-06-21T03:31:34.7642182Z     },
2026-06-21T03:31:34.7642286Z     {
2026-06-21T03:31:34.7642439Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T03:31:34.7642624Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T03:31:34.7642739Z       "requiredStages": [
2026-06-21T03:31:34.7642850Z         "impl",
2026-06-21T03:31:34.7642957Z         "unit"
2026-06-21T03:31:34.7643057Z       ],
2026-06-21T03:31:34.7643167Z       "stages": {
2026-06-21T03:31:34.7643279Z         "doc": {
2026-06-21T03:31:34.7643388Z           "complete": false,
2026-06-21T03:31:34.7643499Z           "evidence": []
2026-06-21T03:31:34.7643603Z         },
2026-06-21T03:31:34.7643819Z         "impl": {
2026-06-21T03:31:34.7643932Z           "complete": true,
2026-06-21T03:31:34.7644042Z           "evidence": [
2026-06-21T03:31:34.7644148Z             {
2026-06-21T03:31:34.7644294Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7644410Z               "line": 552
2026-06-21T03:31:34.7644519Z             },
2026-06-21T03:31:34.7644628Z             {
2026-06-21T03:31:34.7644773Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7644886Z               "line": 28
2026-06-21T03:31:34.7644996Z             }
2026-06-21T03:31:34.7645097Z           ]
2026-06-21T03:31:34.7645201Z         },
2026-06-21T03:31:34.7645306Z         "int": {
2026-06-21T03:31:34.7645426Z           "complete": false,
2026-06-21T03:31:34.7645535Z           "evidence": []
2026-06-21T03:31:34.7645645Z         },
2026-06-21T03:31:34.7645755Z         "unit": {
2026-06-21T03:31:34.7645867Z           "complete": true,
2026-06-21T03:31:34.7645987Z           "evidence": [
2026-06-21T03:31:34.7646095Z             {
2026-06-21T03:31:34.7646237Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7646342Z               "line": 229
2026-06-21T03:31:34.7646452Z             }
2026-06-21T03:31:34.7646556Z           ]
2026-06-21T03:31:34.7646658Z         }
2026-06-21T03:31:34.7646762Z       }
2026-06-21T03:31:34.7646866Z     },
2026-06-21T03:31:34.7646972Z     {
2026-06-21T03:31:34.7647100Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T03:31:34.7647258Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T03:31:34.7647376Z       "requiredStages": [],
2026-06-21T03:31:34.7647481Z       "stages": {
2026-06-21T03:31:34.7647582Z         "doc": {
2026-06-21T03:31:34.7647691Z           "complete": false,
2026-06-21T03:31:34.7647796Z           "evidence": []
2026-06-21T03:31:34.7647892Z         },
2026-06-21T03:31:34.7648001Z         "impl": {
2026-06-21T03:31:34.7648111Z           "complete": false,
2026-06-21T03:31:34.7648226Z           "evidence": []
2026-06-21T03:31:34.7648340Z         },
2026-06-21T03:31:34.7648444Z         "int": {
2026-06-21T03:31:34.7648563Z           "complete": false,
2026-06-21T03:31:34.7648671Z           "evidence": []
2026-06-21T03:31:34.7648779Z         },
2026-06-21T03:31:34.7648880Z         "unit": {
2026-06-21T03:31:34.7649080Z           "complete": false,
2026-06-21T03:31:34.7649195Z           "evidence": []
2026-06-21T03:31:34.7649295Z         }
2026-06-21T03:31:34.7649399Z       }
2026-06-21T03:31:34.7649500Z     },
2026-06-21T03:31:34.7649605Z     {
2026-06-21T03:31:34.7649748Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T03:31:34.7649915Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T03:31:34.7650033Z       "requiredStages": [
2026-06-21T03:31:34.7650139Z         "impl",
2026-06-21T03:31:34.7650249Z         "unit"
2026-06-21T03:31:34.7650353Z       ],
2026-06-21T03:31:34.7650464Z       "stages": {
2026-06-21T03:31:34.7650568Z         "doc": {
2026-06-21T03:31:34.7650682Z           "complete": false,
2026-06-21T03:31:34.7650788Z           "evidence": []
2026-06-21T03:31:34.7650892Z         },
2026-06-21T03:31:34.7650992Z         "impl": {
2026-06-21T03:31:34.7651098Z           "complete": true,
2026-06-21T03:31:34.7651207Z           "evidence": [
2026-06-21T03:31:34.7651320Z             {
2026-06-21T03:31:34.7651564Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:31:34.7651682Z               "line": 19
2026-06-21T03:31:34.7651788Z             },
2026-06-21T03:31:34.7651884Z             {
2026-06-21T03:31:34.7652026Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7652141Z               "line": 463
2026-06-21T03:31:34.7652250Z             },
2026-06-21T03:31:34.7652351Z             {
2026-06-21T03:31:34.7652503Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7652608Z               "line": 499
2026-06-21T03:31:34.7652709Z             },
2026-06-21T03:31:34.7652818Z             {
2026-06-21T03:31:34.7653062Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7653170Z               "line": 547
2026-06-21T03:31:34.7653270Z             },
2026-06-21T03:31:34.7653377Z             {
2026-06-21T03:31:34.7653518Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7653636Z               "line": 15
2026-06-21T03:31:34.7653741Z             },
2026-06-21T03:31:34.7653844Z             {
2026-06-21T03:31:34.7653987Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7654088Z               "line": 48
2026-06-21T03:31:34.7654196Z             },
2026-06-21T03:31:34.7654302Z             {
2026-06-21T03:31:34.7654441Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7654554Z               "line": 119
2026-06-21T03:31:34.7654655Z             },
2026-06-21T03:31:34.7654765Z             {
2026-06-21T03:31:34.7654893Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7654999Z               "line": 3948
2026-06-21T03:31:34.7655103Z             }
2026-06-21T03:31:34.7655213Z           ]
2026-06-21T03:31:34.7655318Z         },
2026-06-21T03:31:34.7655423Z         "int": {
2026-06-21T03:31:34.7655542Z           "complete": false,
2026-06-21T03:31:34.7655652Z           "evidence": []
2026-06-21T03:31:34.7655756Z         },
2026-06-21T03:31:34.7655871Z         "unit": {
2026-06-21T03:31:34.7655981Z           "complete": true,
2026-06-21T03:31:34.7656085Z           "evidence": [
2026-06-21T03:31:34.7656191Z             {
2026-06-21T03:31:34.7656343Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7656456Z               "line": 765
2026-06-21T03:31:34.7656566Z             },
2026-06-21T03:31:34.7656669Z             {
2026-06-21T03:31:34.7656811Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7656912Z               "line": 165
2026-06-21T03:31:34.7657017Z             },
2026-06-21T03:31:34.7657126Z             {
2026-06-21T03:31:34.7657256Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:31:34.7657374Z               "line": 175
2026-06-21T03:31:34.7657479Z             }
2026-06-21T03:31:34.7657580Z           ]
2026-06-21T03:31:34.7657689Z         }
2026-06-21T03:31:34.7657794Z       }
2026-06-21T03:31:34.7657899Z     },
2026-06-21T03:31:34.7658004Z     {
2026-06-21T03:31:34.7658143Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T03:31:34.7659104Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T03:31:34.7659213Z       "requiredStages": [
2026-06-21T03:31:34.7659325Z         "impl",
2026-06-21T03:31:34.7659430Z         "unit"
2026-06-21T03:31:34.7659532Z       ],
2026-06-21T03:31:34.7659640Z       "stages": {
2026-06-21T03:31:34.7659750Z         "doc": {
2026-06-21T03:31:34.7659880Z           "complete": false,
2026-06-21T03:31:34.7659983Z           "evidence": []
2026-06-21T03:31:34.7660085Z         },
2026-06-21T03:31:34.7660189Z         "impl": {
2026-06-21T03:31:34.7660298Z           "complete": true,
2026-06-21T03:31:34.7660399Z           "evidence": [
2026-06-21T03:31:34.7660503Z             {
2026-06-21T03:31:34.7660743Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7660862Z               "line": 192
2026-06-21T03:31:34.7660966Z             },
2026-06-21T03:31:34.7661067Z             {
2026-06-21T03:31:34.7661209Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7661320Z               "line": 279
2026-06-21T03:31:34.7661429Z             }
2026-06-21T03:31:34.7661528Z           ]
2026-06-21T03:31:34.7661615Z         },
2026-06-21T03:31:34.7661721Z         "int": {
2026-06-21T03:31:34.7661823Z           "complete": false,
2026-06-21T03:31:34.7661937Z           "evidence": []
2026-06-21T03:31:34.7662038Z         },
2026-06-21T03:31:34.7662233Z         "unit": {
2026-06-21T03:31:34.7662339Z           "complete": true,
2026-06-21T03:31:34.7662448Z           "evidence": [
2026-06-21T03:31:34.7662561Z             {
2026-06-21T03:31:34.7662687Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7662796Z               "line": 470
2026-06-21T03:31:34.7662906Z             },
2026-06-21T03:31:34.7663011Z             {
2026-06-21T03:31:34.7663144Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.7663249Z               "line": 526
2026-06-21T03:31:34.7663354Z             }
2026-06-21T03:31:34.7663459Z           ]
2026-06-21T03:31:34.7663569Z         }
2026-06-21T03:31:34.7663669Z       }
2026-06-21T03:31:34.7663773Z     },
2026-06-21T03:31:34.7663874Z     {
2026-06-21T03:31:34.7664008Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T03:31:34.7667934Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T03:31:34.7668092Z       "requiredStages": [
2026-06-21T03:31:34.7668197Z         "impl",
2026-06-21T03:31:34.7668301Z         "unit",
2026-06-21T03:31:34.7668402Z         "int"
2026-06-21T03:31:34.7668502Z       ],
2026-06-21T03:31:34.7668616Z       "stages": {
2026-06-21T03:31:34.7668727Z         "doc": {
2026-06-21T03:31:34.7668849Z           "complete": false,
2026-06-21T03:31:34.7669046Z           "evidence": []
2026-06-21T03:31:34.7669155Z         },
2026-06-21T03:31:34.7669269Z         "impl": {
2026-06-21T03:31:34.7669385Z           "complete": true,
2026-06-21T03:31:34.7669507Z           "evidence": [
2026-06-21T03:31:34.7669606Z             {
2026-06-21T03:31:34.7669778Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7669885Z               "line": 116
2026-06-21T03:31:34.7669991Z             },
2026-06-21T03:31:34.7670097Z             {
2026-06-21T03:31:34.7670243Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.7670364Z               "line": 132
2026-06-21T03:31:34.7670468Z             },
2026-06-21T03:31:34.7670572Z             {
2026-06-21T03:31:34.7670720Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.7670940Z               "line": 434
2026-06-21T03:31:34.7671049Z             },
2026-06-21T03:31:34.7671153Z             {
2026-06-21T03:31:34.7671298Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7671407Z               "line": 139
2026-06-21T03:31:34.7671517Z             },
2026-06-21T03:31:34.7671618Z             {
2026-06-21T03:31:34.7671769Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7671885Z               "line": 326
2026-06-21T03:31:34.7671985Z             },
2026-06-21T03:31:34.7672084Z             {
2026-06-21T03:31:34.7672228Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7672441Z               "line": 555
2026-06-21T03:31:34.7672536Z             }
2026-06-21T03:31:34.7672647Z           ]
2026-06-21T03:31:34.7672755Z         },
2026-06-21T03:31:34.7672856Z         "int": {
2026-06-21T03:31:34.7672975Z           "complete": true,
2026-06-21T03:31:34.7673079Z           "evidence": [
2026-06-21T03:31:34.7673195Z             {
2026-06-21T03:31:34.7673361Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T03:31:34.7673471Z               "line": 32
2026-06-21T03:31:34.7673580Z             }
2026-06-21T03:31:34.7673680Z           ]
2026-06-21T03:31:34.7673780Z         },
2026-06-21T03:31:34.7673881Z         "unit": {
2026-06-21T03:31:34.7674005Z           "complete": true,
2026-06-21T03:31:34.7674100Z           "evidence": [
2026-06-21T03:31:34.7674206Z             {
2026-06-21T03:31:34.7674357Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7674453Z               "line": 625
2026-06-21T03:31:34.7674572Z             },
2026-06-21T03:31:34.7674676Z             {
2026-06-21T03:31:34.7674824Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7674927Z               "line": 646
2026-06-21T03:31:34.7675035Z             },
2026-06-21T03:31:34.7675146Z             {
2026-06-21T03:31:34.7675279Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7675398Z               "line": 662
2026-06-21T03:31:34.7675499Z             },
2026-06-21T03:31:34.7675608Z             {
2026-06-21T03:31:34.7675752Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7675866Z               "line": 680
2026-06-21T03:31:34.7675975Z             },
2026-06-21T03:31:34.7676077Z             {
2026-06-21T03:31:34.7676219Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7676328Z               "line": 704
2026-06-21T03:31:34.7676438Z             }
2026-06-21T03:31:34.7676552Z           ]
2026-06-21T03:31:34.7676657Z         }
2026-06-21T03:31:34.7676763Z       }
2026-06-21T03:31:34.7676857Z     },
2026-06-21T03:31:34.7676962Z     {
2026-06-21T03:31:34.7677092Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T03:31:34.7677277Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T03:31:34.7677397Z       "requiredStages": [
2026-06-21T03:31:34.7677510Z         "impl",
2026-06-21T03:31:34.7677614Z         "unit"
2026-06-21T03:31:34.7677714Z       ],
2026-06-21T03:31:34.7677827Z       "stages": {
2026-06-21T03:31:34.7677931Z         "doc": {
2026-06-21T03:31:34.7678057Z           "complete": false,
2026-06-21T03:31:34.7678170Z           "evidence": []
2026-06-21T03:31:34.7678275Z         },
2026-06-21T03:31:34.7678381Z         "impl": {
2026-06-21T03:31:34.7678494Z           "complete": true,
2026-06-21T03:31:34.7678599Z           "evidence": [
2026-06-21T03:31:34.7678705Z             {
2026-06-21T03:31:34.7678851Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7679034Z               "line": 35
2026-06-21T03:31:34.7679129Z             }
2026-06-21T03:31:34.7679233Z           ]
2026-06-21T03:31:34.7679329Z         },
2026-06-21T03:31:34.7679467Z         "int": {
2026-06-21T03:31:34.7679592Z           "complete": false,
2026-06-21T03:31:34.7682469Z           "evidence": []
2026-06-21T03:31:34.7682601Z         },
2026-06-21T03:31:34.7682879Z         "unit": {
2026-06-21T03:31:34.7683001Z           "complete": true,
2026-06-21T03:31:34.7683110Z           "evidence": [
2026-06-21T03:31:34.7683221Z             {
2026-06-21T03:31:34.7683372Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:31:34.7683488Z               "line": 220
2026-06-21T03:31:34.7683592Z             }
2026-06-21T03:31:34.7683696Z           ]
2026-06-21T03:31:34.7683793Z         }
2026-06-21T03:31:34.7683893Z       }
2026-06-21T03:31:34.7683997Z     },
2026-06-21T03:31:34.7684094Z     {
2026-06-21T03:31:34.7684240Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T03:31:34.7687532Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T03:31:34.7687703Z       "requiredStages": [
2026-06-21T03:31:34.7687809Z         "impl",
2026-06-21T03:31:34.7687920Z         "unit",
2026-06-21T03:31:34.7688023Z         "int"
2026-06-21T03:31:34.7688127Z       ],
2026-06-21T03:31:34.7688232Z       "stages": {
2026-06-21T03:31:34.7688331Z         "doc": {
2026-06-21T03:31:34.7688453Z           "complete": false,
2026-06-21T03:31:34.7688559Z           "evidence": []
2026-06-21T03:31:34.7688664Z         },
2026-06-21T03:31:34.7688763Z         "impl": {
2026-06-21T03:31:34.7688884Z           "complete": true,
2026-06-21T03:31:34.7689083Z           "evidence": [
2026-06-21T03:31:34.7689189Z             {
2026-06-21T03:31:34.7689355Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7689474Z               "line": 202
2026-06-21T03:31:34.7689580Z             },
2026-06-21T03:31:34.7689679Z             {
2026-06-21T03:31:34.7689838Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.7689951Z               "line": 107
2026-06-21T03:31:34.7690046Z             },
2026-06-21T03:31:34.7690148Z             {
2026-06-21T03:31:34.7690289Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.7690389Z               "line": 138
2026-06-21T03:31:34.7690491Z             },
2026-06-21T03:31:34.7690595Z             {
2026-06-21T03:31:34.7690736Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7690846Z               "line": 209
2026-06-21T03:31:34.7690954Z             },
2026-06-21T03:31:34.7691053Z             {
2026-06-21T03:31:34.7691202Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7691311Z               "line": 246
2026-06-21T03:31:34.7691421Z             },
2026-06-21T03:31:34.7691517Z             {
2026-06-21T03:31:34.7691663Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7691774Z               "line": 379
2026-06-21T03:31:34.7691879Z             }
2026-06-21T03:31:34.7691983Z           ]
2026-06-21T03:31:34.7692089Z         },
2026-06-21T03:31:34.7692193Z         "int": {
2026-06-21T03:31:34.7692303Z           "complete": true,
2026-06-21T03:31:34.7692414Z           "evidence": [
2026-06-21T03:31:34.7692522Z             {
2026-06-21T03:31:34.7692785Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T03:31:34.7692885Z               "line": 17
2026-06-21T03:31:34.7692985Z             }
2026-06-21T03:31:34.7693086Z           ]
2026-06-21T03:31:34.7693189Z         },
2026-06-21T03:31:34.7693300Z         "unit": {
2026-06-21T03:31:34.7693420Z           "complete": true,
2026-06-21T03:31:34.7693523Z           "evidence": [
2026-06-21T03:31:34.7693632Z             {
2026-06-21T03:31:34.7693772Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7693875Z               "line": 982
2026-06-21T03:31:34.7693976Z             }
2026-06-21T03:31:34.7694081Z           ]
2026-06-21T03:31:34.7694281Z         }
2026-06-21T03:31:34.7694382Z       }
2026-06-21T03:31:34.7694491Z     },
2026-06-21T03:31:34.7694591Z     {
2026-06-21T03:31:34.7694725Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T03:31:34.7695011Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T03:31:34.7695134Z       "requiredStages": [
2026-06-21T03:31:34.7695235Z         "impl",
2026-06-21T03:31:34.7695340Z         "unit"
2026-06-21T03:31:34.7695444Z       ],
2026-06-21T03:31:34.7695549Z       "stages": {
2026-06-21T03:31:34.7695655Z         "doc": {
2026-06-21T03:31:34.7695772Z           "complete": false,
2026-06-21T03:31:34.7695887Z           "evidence": []
2026-06-21T03:31:34.7695996Z         },
2026-06-21T03:31:34.7696089Z         "impl": {
2026-06-21T03:31:34.7696214Z           "complete": true,
2026-06-21T03:31:34.7696319Z           "evidence": [
2026-06-21T03:31:34.7696428Z             {
2026-06-21T03:31:34.7696576Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.7696695Z               "line": 405
2026-06-21T03:31:34.7696804Z             },
2026-06-21T03:31:34.7696906Z             {
2026-06-21T03:31:34.7697047Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.7697158Z               "line": 409
2026-06-21T03:31:34.7697263Z             },
2026-06-21T03:31:34.7697367Z             {
2026-06-21T03:31:34.7697511Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.7697625Z               "line": 156
2026-06-21T03:31:34.7697720Z             }
2026-06-21T03:31:34.7697826Z           ]
2026-06-21T03:31:34.7697925Z         },
2026-06-21T03:31:34.7698035Z         "int": {
2026-06-21T03:31:34.7698155Z           "complete": false,
2026-06-21T03:31:34.7698263Z           "evidence": []
2026-06-21T03:31:34.7698369Z         },
2026-06-21T03:31:34.7698470Z         "unit": {
2026-06-21T03:31:34.7698583Z           "complete": true,
2026-06-21T03:31:34.7698692Z           "evidence": [
2026-06-21T03:31:34.7698797Z             {
2026-06-21T03:31:34.7699061Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.7699177Z               "line": 865
2026-06-21T03:31:34.7699286Z             },
2026-06-21T03:31:34.7699385Z             {
2026-06-21T03:31:34.7699539Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.7699653Z               "line": 879
2026-06-21T03:31:34.7699754Z             },
2026-06-21T03:31:34.7699863Z             {
2026-06-21T03:31:34.7699995Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.7700111Z               "line": 898
2026-06-21T03:31:34.7700211Z             },
2026-06-21T03:31:34.7700315Z             {
2026-06-21T03:31:34.7700459Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.7700568Z               "line": 915
2026-06-21T03:31:34.7700674Z             },
2026-06-21T03:31:34.7700769Z             {
2026-06-21T03:31:34.7700921Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.7701032Z               "line": 441
2026-06-21T03:31:34.7701131Z             }
2026-06-21T03:31:34.7701225Z           ]
2026-06-21T03:31:34.7701325Z         }
2026-06-21T03:31:34.7701430Z       }
2026-06-21T03:31:34.7701528Z     },
2026-06-21T03:31:34.7701633Z     {
2026-06-21T03:31:34.7701881Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T03:31:34.7711729Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T03:31:34.7712027Z       "requiredStages": [
2026-06-21T03:31:34.7712135Z         "doc",
2026-06-21T03:31:34.7712246Z         "impl",
2026-06-21T03:31:34.7712351Z         "unit",
2026-06-21T03:31:34.7712460Z         "int"
2026-06-21T03:31:34.7712566Z       ],
2026-06-21T03:31:34.7712666Z       "stages": {
2026-06-21T03:31:34.7712775Z         "doc": {
2026-06-21T03:31:34.7712881Z           "complete": true,
2026-06-21T03:31:34.7712995Z           "evidence": [
2026-06-21T03:31:34.7713103Z             {
2026-06-21T03:31:34.7713233Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7713337Z               "line": 420
2026-06-21T03:31:34.7713442Z             },
2026-06-21T03:31:34.7713548Z             {
2026-06-21T03:31:34.7713676Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7713887Z               "line": 402
2026-06-21T03:31:34.7713981Z             }
2026-06-21T03:31:34.7714091Z           ]
2026-06-21T03:31:34.7714197Z         },
2026-06-21T03:31:34.7714300Z         "impl": {
2026-06-21T03:31:34.7714406Z           "complete": true,
2026-06-21T03:31:34.7714516Z           "evidence": [
2026-06-21T03:31:34.7714615Z             {
2026-06-21T03:31:34.7714767Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7714873Z               "line": 797
2026-06-21T03:31:34.7714982Z             },
2026-06-21T03:31:34.7715086Z             {
2026-06-21T03:31:34.7715220Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7715406Z               "line": 822
2026-06-21T03:31:34.7715511Z             },
2026-06-21T03:31:34.7715616Z             {
2026-06-21T03:31:34.7715764Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7715873Z               "line": 839
2026-06-21T03:31:34.7715977Z             },
2026-06-21T03:31:34.7716084Z             {
2026-06-21T03:31:34.7716226Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7716341Z               "line": 854
2026-06-21T03:31:34.7716432Z             },
2026-06-21T03:31:34.7716540Z             {
2026-06-21T03:31:34.7716684Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7716789Z               "line": 874
2026-06-21T03:31:34.7716897Z             },
2026-06-21T03:31:34.7717002Z             {
2026-06-21T03:31:34.7717135Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7717243Z               "line": 964
2026-06-21T03:31:34.7717339Z             },
2026-06-21T03:31:34.7717444Z             {
2026-06-21T03:31:34.7717581Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7717691Z               "line": 1016
2026-06-21T03:31:34.7717797Z             },
2026-06-21T03:31:34.7717901Z             {
2026-06-21T03:31:34.7718045Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7718154Z               "line": 1075
2026-06-21T03:31:34.7718259Z             },
2026-06-21T03:31:34.7718360Z             {
2026-06-21T03:31:34.7718506Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.7718612Z               "line": 527
2026-06-21T03:31:34.7718712Z             }
2026-06-21T03:31:34.7718812Z           ]
2026-06-21T03:31:34.7718912Z         },
2026-06-21T03:31:34.7719088Z         "int": {
2026-06-21T03:31:34.7719203Z           "complete": true,
2026-06-21T03:31:34.7719309Z           "evidence": [
2026-06-21T03:31:34.7719403Z             {
2026-06-21T03:31:34.7719557Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:31:34.7719676Z               "line": 35
2026-06-21T03:31:34.7719779Z             },
2026-06-21T03:31:34.7719889Z             {
2026-06-21T03:31:34.7720035Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:31:34.7720139Z               "line": 559
2026-06-21T03:31:34.7720244Z             },
2026-06-21T03:31:34.7720350Z             {
2026-06-21T03:31:34.7720496Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:31:34.7720612Z               "line": 580
2026-06-21T03:31:34.7720707Z             }
2026-06-21T03:31:34.7720811Z           ]
2026-06-21T03:31:34.7720912Z         },
2026-06-21T03:31:34.7721017Z         "unit": {
2026-06-21T03:31:34.7721135Z           "complete": true,
2026-06-21T03:31:34.7721246Z           "evidence": [
2026-06-21T03:31:34.7721350Z             {
2026-06-21T03:31:34.7721494Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7721603Z               "line": 1202
2026-06-21T03:31:34.7721702Z             },
2026-06-21T03:31:34.7721809Z             {
2026-06-21T03:31:34.7721955Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7722070Z               "line": 1246
2026-06-21T03:31:34.7722176Z             },
2026-06-21T03:31:34.7722279Z             {
2026-06-21T03:31:34.7722412Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7722639Z               "line": 1260
2026-06-21T03:31:34.7722743Z             },
2026-06-21T03:31:34.7722849Z             {
2026-06-21T03:31:34.7722982Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7723092Z               "line": 1278
2026-06-21T03:31:34.7723193Z             },
2026-06-21T03:31:34.7723292Z             {
2026-06-21T03:31:34.7723436Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7723545Z               "line": 1302
2026-06-21T03:31:34.7723645Z             },
2026-06-21T03:31:34.7723746Z             {
2026-06-21T03:31:34.7723874Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7724075Z               "line": 1529
2026-06-21T03:31:34.7724179Z             }
2026-06-21T03:31:34.7724289Z           ]
2026-06-21T03:31:34.7724390Z         }
2026-06-21T03:31:34.7724489Z       }
2026-06-21T03:31:34.7724594Z     },
2026-06-21T03:31:34.7724695Z     {
2026-06-21T03:31:34.7724836Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T03:31:34.7727035Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T03:31:34.7727163Z       "requiredStages": [
2026-06-21T03:31:34.7727269Z         "unit",
2026-06-21T03:31:34.7727373Z         "int"
2026-06-21T03:31:34.7727476Z       ],
2026-06-21T03:31:34.7727572Z       "stages": {
2026-06-21T03:31:34.7727681Z         "doc": {
2026-06-21T03:31:34.7727803Z           "complete": true,
2026-06-21T03:31:34.7727913Z           "evidence": [
2026-06-21T03:31:34.7728019Z             {
2026-06-21T03:31:34.7728146Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7728266Z               "line": 381
2026-06-21T03:31:34.7728366Z             }
2026-06-21T03:31:34.7728461Z           ]
2026-06-21T03:31:34.7728567Z         },
2026-06-21T03:31:34.7728671Z         "impl": {
2026-06-21T03:31:34.7728785Z           "complete": true,
2026-06-21T03:31:34.7728882Z           "evidence": [
2026-06-21T03:31:34.7729081Z             {
2026-06-21T03:31:34.7729225Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7729344Z               "line": 100
2026-06-21T03:31:34.7729448Z             }
2026-06-21T03:31:34.7729554Z           ]
2026-06-21T03:31:34.7729657Z         },
2026-06-21T03:31:34.7729763Z         "int": {
2026-06-21T03:31:34.7729869Z           "complete": true,
2026-06-21T03:31:34.7729977Z           "evidence": [
2026-06-21T03:31:34.7730083Z             {
2026-06-21T03:31:34.7730231Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7730344Z               "line": 1042
2026-06-21T03:31:34.7730444Z             }
2026-06-21T03:31:34.7730548Z           ]
2026-06-21T03:31:34.7730656Z         },
2026-06-21T03:31:34.7730756Z         "unit": {
2026-06-21T03:31:34.7730871Z           "complete": true,
2026-06-21T03:31:34.7730980Z           "evidence": [
2026-06-21T03:31:34.7731085Z             {
2026-06-21T03:31:34.7731229Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.7731337Z               "line": 2217
2026-06-21T03:31:34.7731444Z             }
2026-06-21T03:31:34.7731543Z           ]
2026-06-21T03:31:34.7731642Z         }
2026-06-21T03:31:34.7731744Z       }
2026-06-21T03:31:34.7731848Z     },
2026-06-21T03:31:34.7731953Z     {
2026-06-21T03:31:34.7732083Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T03:31:34.7733039Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T03:31:34.7733157Z       "requiredStages": [
2026-06-21T03:31:34.7733270Z         "doc",
2026-06-21T03:31:34.7733380Z         "impl",
2026-06-21T03:31:34.7733476Z         "unit"
2026-06-21T03:31:34.7733585Z       ],
2026-06-21T03:31:34.7733691Z       "stages": {
2026-06-21T03:31:34.7733801Z         "doc": {
2026-06-21T03:31:34.7733919Z           "complete": true,
2026-06-21T03:31:34.7734134Z           "evidence": [
2026-06-21T03:31:34.7734238Z             {
2026-06-21T03:31:34.7734373Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7734477Z               "line": 366
2026-06-21T03:31:34.7734581Z             }
2026-06-21T03:31:34.7734678Z           ]
2026-06-21T03:31:34.7734792Z         },
2026-06-21T03:31:34.7734901Z         "impl": {
2026-06-21T03:31:34.7735016Z           "complete": true,
2026-06-21T03:31:34.7735125Z           "evidence": [
2026-06-21T03:31:34.7735226Z             {
2026-06-21T03:31:34.7735364Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.7735473Z               "line": 87
2026-06-21T03:31:34.7735570Z             },
2026-06-21T03:31:34.7735674Z             {
2026-06-21T03:31:34.7735820Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7735931Z               "line": 105
2026-06-21T03:31:34.7736040Z             },
2026-06-21T03:31:34.7736144Z             {
2026-06-21T03:31:34.7736303Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.7736411Z               "line": 55
2026-06-21T03:31:34.7736512Z             },
2026-06-21T03:31:34.7736622Z             {
2026-06-21T03:31:34.7736769Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.7736875Z               "line": 31
2026-06-21T03:31:34.7736984Z             },
2026-06-21T03:31:34.7737098Z             {
2026-06-21T03:31:34.7737242Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.7737346Z               "line": 446
2026-06-21T03:31:34.7737456Z             },
2026-06-21T03:31:34.7737562Z             {
2026-06-21T03:31:34.7737713Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.7737814Z               "line": 95
2026-06-21T03:31:34.7737924Z             },
2026-06-21T03:31:34.7738032Z             {
2026-06-21T03:31:34.7738171Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.7738274Z               "line": 29
2026-06-21T03:31:34.7738382Z             },
2026-06-21T03:31:34.7738497Z             {
2026-06-21T03:31:34.7738640Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.7738740Z               "line": 104
2026-06-21T03:31:34.7738851Z             },
2026-06-21T03:31:34.7739035Z             {
2026-06-21T03:31:34.7739203Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7739307Z               "line": 208
2026-06-21T03:31:34.7739413Z             },
2026-06-21T03:31:34.7739532Z             {
2026-06-21T03:31:34.7739679Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:31:34.7739790Z               "line": 28
2026-06-21T03:31:34.7739894Z             },
2026-06-21T03:31:34.7739998Z             {
2026-06-21T03:31:34.7740143Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:31:34.7740262Z               "line": 74
2026-06-21T03:31:34.7740367Z             },
2026-06-21T03:31:34.7740472Z             {
2026-06-21T03:31:34.7740628Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.7740734Z               "line": 32
2026-06-21T03:31:34.7740833Z             },
2026-06-21T03:31:34.7740937Z             {
2026-06-21T03:31:34.7741090Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7741311Z               "line": 40
2026-06-21T03:31:34.7741413Z             },
2026-06-21T03:31:34.7741512Z             {
2026-06-21T03:31:34.7741645Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7741774Z               "line": 184
2026-06-21T03:31:34.7741878Z             },
2026-06-21T03:31:34.7741994Z             {
2026-06-21T03:31:34.7742137Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.7742241Z               "line": 61
2026-06-21T03:31:34.7742352Z             },
2026-06-21T03:31:34.7742456Z             {
2026-06-21T03:31:34.7742589Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.7742799Z               "line": 131
2026-06-21T03:31:34.7742909Z             },
2026-06-21T03:31:34.7743015Z             {
2026-06-21T03:31:34.7743143Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.7743254Z               "line": 223
2026-06-21T03:31:34.7743358Z             },
2026-06-21T03:31:34.7743461Z             {
2026-06-21T03:31:34.7743609Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:31:34.7743713Z               "line": 37
2026-06-21T03:31:34.7743826Z             },
2026-06-21T03:31:34.7743926Z             {
2026-06-21T03:31:34.7744079Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.7744188Z               "line": 38
2026-06-21T03:31:34.7744299Z             },
2026-06-21T03:31:34.7744403Z             {
2026-06-21T03:31:34.7744551Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.7744656Z               "line": 36
2026-06-21T03:31:34.7744765Z             },
2026-06-21T03:31:34.7744871Z             {
2026-06-21T03:31:34.7745018Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:31:34.7745128Z               "line": 40
2026-06-21T03:31:34.7745234Z             }
2026-06-21T03:31:34.7745333Z           ]
2026-06-21T03:31:34.7745447Z         },
2026-06-21T03:31:34.7745548Z         "int": {
2026-06-21T03:31:34.7745656Z           "complete": false,
2026-06-21T03:31:34.7745776Z           "evidence": []
2026-06-21T03:31:34.7745883Z         },
2026-06-21T03:31:34.7745985Z         "unit": {
2026-06-21T03:31:34.7746096Z           "complete": true,
2026-06-21T03:31:34.7746202Z           "evidence": [
2026-06-21T03:31:34.7746304Z             {
2026-06-21T03:31:34.7746466Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.7746577Z               "line": 212
2026-06-21T03:31:34.7746681Z             },
2026-06-21T03:31:34.7746786Z             {
2026-06-21T03:31:34.7746948Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T03:31:34.7747062Z               "line": 136
2026-06-21T03:31:34.7747168Z             },
2026-06-21T03:31:34.7747277Z             {
2026-06-21T03:31:34.7747430Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.7747540Z               "line": 685
2026-06-21T03:31:34.7747644Z             },
2026-06-21T03:31:34.7747745Z             {
2026-06-21T03:31:34.7747902Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.7748006Z               "line": 224
2026-06-21T03:31:34.7748117Z             },
2026-06-21T03:31:34.7748221Z             {
2026-06-21T03:31:34.7748375Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:31:34.7748484Z               "line": 206
2026-06-21T03:31:34.7748583Z             },
2026-06-21T03:31:34.7748683Z             {
2026-06-21T03:31:34.7748824Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.7749028Z               "line": 112
2026-06-21T03:31:34.7749134Z             },
2026-06-21T03:31:34.7749248Z             {
2026-06-21T03:31:34.7749411Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:31:34.7749515Z               "line": 157
2026-06-21T03:31:34.7749624Z             },
2026-06-21T03:31:34.7749725Z             {
2026-06-21T03:31:34.7749877Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.7749983Z               "line": 215
2026-06-21T03:31:34.7750187Z             },
2026-06-21T03:31:34.7750287Z             {
2026-06-21T03:31:34.7750435Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.7750545Z               "line": 141
2026-06-21T03:31:34.7750646Z             },
2026-06-21T03:31:34.7750755Z             {
2026-06-21T03:31:34.7750898Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:31:34.7750998Z               "line": 162
2026-06-21T03:31:34.7751107Z             }
2026-06-21T03:31:34.7751198Z           ]
2026-06-21T03:31:34.7751304Z         }
2026-06-21T03:31:34.7751403Z       }
2026-06-21T03:31:34.7751506Z     },
2026-06-21T03:31:34.7751715Z     {
2026-06-21T03:31:34.7751876Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T03:31:34.7753775Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T03:31:34.7753904Z       "requiredStages": [
2026-06-21T03:31:34.7754011Z         "doc",
2026-06-21T03:31:34.7754121Z         "impl",
2026-06-21T03:31:34.7754221Z         "unit",
2026-06-21T03:31:34.7754324Z         "int"
2026-06-21T03:31:34.7754424Z       ],
2026-06-21T03:31:34.7754535Z       "stages": {
2026-06-21T03:31:34.7754639Z         "doc": {
2026-06-21T03:31:34.7754748Z           "complete": true,
2026-06-21T03:31:34.7754859Z           "evidence": [
2026-06-21T03:31:34.7754963Z             {
2026-06-21T03:31:34.7755102Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.7755220Z               "line": 250
2026-06-21T03:31:34.7755329Z             }
2026-06-21T03:31:34.7755436Z           ]
2026-06-21T03:31:34.7755535Z         },
2026-06-21T03:31:34.7755644Z         "impl": {
2026-06-21T03:31:34.7755755Z           "complete": true,
2026-06-21T03:31:34.7755869Z           "evidence": [
2026-06-21T03:31:34.7755969Z             {
2026-06-21T03:31:34.7756113Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.7756221Z               "line": 135
2026-06-21T03:31:34.7756332Z             },
2026-06-21T03:31:34.7756438Z             {
2026-06-21T03:31:34.7756575Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.7756695Z               "line": 157
2026-06-21T03:31:34.7756800Z             }
2026-06-21T03:31:34.7756907Z           ]
2026-06-21T03:31:34.7757012Z         },
2026-06-21T03:31:34.7757118Z         "int": {
2026-06-21T03:31:34.7757246Z           "complete": true,
2026-06-21T03:31:34.7757351Z           "evidence": [
2026-06-21T03:31:34.7757466Z             {
2026-06-21T03:31:34.7757608Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T03:31:34.7757728Z               "line": 15
2026-06-21T03:31:34.7757833Z             }
2026-06-21T03:31:34.7757937Z           ]
2026-06-21T03:31:34.7758048Z         },
2026-06-21T03:31:34.7758152Z         "unit": {
2026-06-21T03:31:34.7758256Z           "complete": true,
2026-06-21T03:31:34.7758358Z           "evidence": [
2026-06-21T03:31:34.7758467Z             {
2026-06-21T03:31:34.7758611Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T03:31:34.7758720Z               "line": 233
2026-06-21T03:31:34.7758819Z             }
2026-06-21T03:31:34.7758925Z           ]
2026-06-21T03:31:34.7759110Z         }
2026-06-21T03:31:34.7759214Z       }
2026-06-21T03:31:34.7759319Z     },
2026-06-21T03:31:34.7759422Z     {
2026-06-21T03:31:34.7759570Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T03:31:34.7759755Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T03:31:34.7759966Z       "requiredStages": [
2026-06-21T03:31:34.7760065Z         "impl",
2026-06-21T03:31:34.7760165Z         "unit"
2026-06-21T03:31:34.7760267Z       ],
2026-06-21T03:31:34.7760371Z       "stages": {
2026-06-21T03:31:34.7760480Z         "doc": {
2026-06-21T03:31:34.7760596Z           "complete": false,
2026-06-21T03:31:34.7760700Z           "evidence": []
2026-06-21T03:31:34.7760804Z         },
2026-06-21T03:31:34.7760901Z         "impl": {
2026-06-21T03:31:34.7761015Z           "complete": true,
2026-06-21T03:31:34.7761124Z           "evidence": [
2026-06-21T03:31:34.7761225Z             {
2026-06-21T03:31:34.7761492Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.7761610Z               "line": 95
2026-06-21T03:31:34.7761749Z             },
2026-06-21T03:31:34.7761865Z             {
2026-06-21T03:31:34.7762001Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7762110Z               "line": 117
2026-06-21T03:31:34.7762210Z             }
2026-06-21T03:31:34.7762313Z           ]
2026-06-21T03:31:34.7762417Z         },
2026-06-21T03:31:34.7762528Z         "int": {
2026-06-21T03:31:34.7762642Z           "complete": false,
2026-06-21T03:31:34.7762751Z           "evidence": []
2026-06-21T03:31:34.7762852Z         },
2026-06-21T03:31:34.7762956Z         "unit": {
2026-06-21T03:31:34.7763061Z           "complete": true,
2026-06-21T03:31:34.7763167Z           "evidence": [
2026-06-21T03:31:34.7763271Z             {
2026-06-21T03:31:34.7763405Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.7763519Z               "line": 250
2026-06-21T03:31:34.7763624Z             },
2026-06-21T03:31:34.7763729Z             {
2026-06-21T03:31:34.7763872Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.7763967Z               "line": 412
2026-06-21T03:31:34.7764078Z             },
2026-06-21T03:31:34.7764177Z             {
2026-06-21T03:31:34.7764320Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7764436Z               "line": 611
2026-06-21T03:31:34.7764544Z             },
2026-06-21T03:31:34.7764653Z             {
2026-06-21T03:31:34.7764791Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7764908Z               "line": 669
2026-06-21T03:31:34.7765013Z             }
2026-06-21T03:31:34.7765118Z           ]
2026-06-21T03:31:34.7765223Z         }
2026-06-21T03:31:34.7765322Z       }
2026-06-21T03:31:34.7765414Z     },
2026-06-21T03:31:34.7765519Z     {
2026-06-21T03:31:34.7765657Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T03:31:34.7768144Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T03:31:34.7768279Z       "requiredStages": [
2026-06-21T03:31:34.7768388Z         "impl",
2026-06-21T03:31:34.7768497Z         "unit",
2026-06-21T03:31:34.7768599Z         "int"
2026-06-21T03:31:34.7768713Z       ],
2026-06-21T03:31:34.7768822Z       "stages": {
2026-06-21T03:31:34.7769032Z         "doc": {
2026-06-21T03:31:34.7769151Z           "complete": false,
2026-06-21T03:31:34.7769266Z           "evidence": []
2026-06-21T03:31:34.7769375Z         },
2026-06-21T03:31:34.7769485Z         "impl": {
2026-06-21T03:31:34.7769604Z           "complete": true,
2026-06-21T03:31:34.7769817Z           "evidence": [
2026-06-21T03:31:34.7769926Z             {
2026-06-21T03:31:34.7770077Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7770192Z               "line": 925
2026-06-21T03:31:34.7770297Z             },
2026-06-21T03:31:34.7770396Z             {
2026-06-21T03:31:34.7770545Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7770649Z               "line": 994
2026-06-21T03:31:34.7770754Z             }
2026-06-21T03:31:34.7770855Z           ]
2026-06-21T03:31:34.7770964Z         },
2026-06-21T03:31:34.7771064Z         "int": {
2026-06-21T03:31:34.7771279Z           "complete": true,
2026-06-21T03:31:34.7771393Z           "evidence": [
2026-06-21T03:31:34.7771485Z             {
2026-06-21T03:31:34.7771631Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:31:34.7771733Z               "line": 187
2026-06-21T03:31:34.7771841Z             },
2026-06-21T03:31:34.7771946Z             {
2026-06-21T03:31:34.7772096Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:31:34.7772203Z               "line": 343
2026-06-21T03:31:34.7772304Z             }
2026-06-21T03:31:34.7772401Z           ]
2026-06-21T03:31:34.7772504Z         },
2026-06-21T03:31:34.7772608Z         "unit": {
2026-06-21T03:31:34.7772723Z           "complete": true,
2026-06-21T03:31:34.7772835Z           "evidence": [
2026-06-21T03:31:34.7772944Z             {
2026-06-21T03:31:34.7773088Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.7773207Z               "line": 1206
2026-06-21T03:31:34.7773306Z             },
2026-06-21T03:31:34.7773417Z             {
2026-06-21T03:31:34.7773545Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7773655Z               "line": 8116
2026-06-21T03:31:34.7773765Z             }
2026-06-21T03:31:34.7773864Z           ]
2026-06-21T03:31:34.7773974Z         }
2026-06-21T03:31:34.7774070Z       }
2026-06-21T03:31:34.7774179Z     },
2026-06-21T03:31:34.7774280Z     {
2026-06-21T03:31:34.7774408Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T03:31:34.7774619Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T03:31:34.7774733Z       "requiredStages": [
2026-06-21T03:31:34.7774842Z         "impl",
2026-06-21T03:31:34.7774948Z         "unit"
2026-06-21T03:31:34.7775057Z       ],
2026-06-21T03:31:34.7775160Z       "stages": {
2026-06-21T03:31:34.7775265Z         "doc": {
2026-06-21T03:31:34.7775383Z           "complete": false,
2026-06-21T03:31:34.7775487Z           "evidence": []
2026-06-21T03:31:34.7775592Z         },
2026-06-21T03:31:34.7775703Z         "impl": {
2026-06-21T03:31:34.7775820Z           "complete": true,
2026-06-21T03:31:34.7775922Z           "evidence": [
2026-06-21T03:31:34.7776031Z             {
2026-06-21T03:31:34.7776183Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7776293Z               "line": 262
2026-06-21T03:31:34.7776403Z             },
2026-06-21T03:31:34.7776508Z             {
2026-06-21T03:31:34.7776646Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7776751Z               "line": 307
2026-06-21T03:31:34.7776861Z             },
2026-06-21T03:31:34.7776966Z             {
2026-06-21T03:31:34.7777094Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7777200Z               "line": 319
2026-06-21T03:31:34.7777304Z             }
2026-06-21T03:31:34.7777409Z           ]
2026-06-21T03:31:34.7777515Z         },
2026-06-21T03:31:34.7777623Z         "int": {
2026-06-21T03:31:34.7777742Z           "complete": false,
2026-06-21T03:31:34.7777854Z           "evidence": []
2026-06-21T03:31:34.7777966Z         },
2026-06-21T03:31:34.7778070Z         "unit": {
2026-06-21T03:31:34.7778180Z           "complete": true,
2026-06-21T03:31:34.7778286Z           "evidence": [
2026-06-21T03:31:34.7778394Z             {
2026-06-21T03:31:34.7781373Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7781697Z               "line": 455
2026-06-21T03:31:34.7781806Z             },
2026-06-21T03:31:34.7781910Z             {
2026-06-21T03:31:34.7782059Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.7782163Z               "line": 499
2026-06-21T03:31:34.7782273Z             }
2026-06-21T03:31:34.7782379Z           ]
2026-06-21T03:31:34.7782473Z         }
2026-06-21T03:31:34.7782573Z       }
2026-06-21T03:31:34.7782670Z     },
2026-06-21T03:31:34.7782773Z     {
2026-06-21T03:31:34.7782893Z       "id": "REQ-HOST-RUN-1",
2026-06-21T03:31:34.7785455Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T03:31:34.7785692Z       "requiredStages": [
2026-06-21T03:31:34.7785811Z         "impl",
2026-06-21T03:31:34.7785915Z         "unit",
2026-06-21T03:31:34.7786019Z         "int"
2026-06-21T03:31:34.7786124Z       ],
2026-06-21T03:31:34.7786234Z       "stages": {
2026-06-21T03:31:34.7786338Z         "doc": {
2026-06-21T03:31:34.7786467Z           "complete": false,
2026-06-21T03:31:34.7786577Z           "evidence": []
2026-06-21T03:31:34.7786672Z         },
2026-06-21T03:31:34.7786772Z         "impl": {
2026-06-21T03:31:34.7786897Z           "complete": true,
2026-06-21T03:31:34.7787001Z           "evidence": [
2026-06-21T03:31:34.7787107Z             {
2026-06-21T03:31:34.7787278Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7787392Z               "line": 30
2026-06-21T03:31:34.7787488Z             },
2026-06-21T03:31:34.7787597Z             {
2026-06-21T03:31:34.7787746Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7787854Z               "line": 76
2026-06-21T03:31:34.7787964Z             },
2026-06-21T03:31:34.7788066Z             {
2026-06-21T03:31:34.7788221Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7788327Z               "line": 181
2026-06-21T03:31:34.7788433Z             },
2026-06-21T03:31:34.7788536Z             {
2026-06-21T03:31:34.7788669Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7788775Z               "line": 1266
2026-06-21T03:31:34.7788874Z             }
2026-06-21T03:31:34.7789056Z           ]
2026-06-21T03:31:34.7789156Z         },
2026-06-21T03:31:34.7789269Z         "int": {
2026-06-21T03:31:34.7789394Z           "complete": true,
2026-06-21T03:31:34.7789504Z           "evidence": [
2026-06-21T03:31:34.7789608Z             {
2026-06-21T03:31:34.7789766Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7789875Z               "line": 285
2026-06-21T03:31:34.7789976Z             }
2026-06-21T03:31:34.7790076Z           ]
2026-06-21T03:31:34.7790171Z         },
2026-06-21T03:31:34.7790286Z         "unit": {
2026-06-21T03:31:34.7790405Z           "complete": true,
2026-06-21T03:31:34.7790514Z           "evidence": [
2026-06-21T03:31:34.7790620Z             {
2026-06-21T03:31:34.7790781Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7790904Z               "line": 229
2026-06-21T03:31:34.7790999Z             },
2026-06-21T03:31:34.7791107Z             {
2026-06-21T03:31:34.7791269Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7791370Z               "line": 296
2026-06-21T03:31:34.7791473Z             },
2026-06-21T03:31:34.7791670Z             {
2026-06-21T03:31:34.7791831Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7791937Z               "line": 419
2026-06-21T03:31:34.7792037Z             }
2026-06-21T03:31:34.7792136Z           ]
2026-06-21T03:31:34.7792238Z         }
2026-06-21T03:31:34.7792333Z       }
2026-06-21T03:31:34.7792437Z     },
2026-06-21T03:31:34.7792538Z     {
2026-06-21T03:31:34.7792647Z       "id": "REQ-HOST-RUN-2",
2026-06-21T03:31:34.7794441Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T03:31:34.7794679Z       "requiredStages": [
2026-06-21T03:31:34.7794771Z         "impl",
2026-06-21T03:31:34.7794875Z         "unit",
2026-06-21T03:31:34.7794984Z         "int"
2026-06-21T03:31:34.7795085Z       ],
2026-06-21T03:31:34.7795195Z       "stages": {
2026-06-21T03:31:34.7795290Z         "doc": {
2026-06-21T03:31:34.7795410Z           "complete": false,
2026-06-21T03:31:34.7795510Z           "evidence": []
2026-06-21T03:31:34.7795619Z         },
2026-06-21T03:31:34.7795720Z         "impl": {
2026-06-21T03:31:34.7795843Z           "complete": true,
2026-06-21T03:31:34.7795948Z           "evidence": [
2026-06-21T03:31:34.7796054Z             {
2026-06-21T03:31:34.7796214Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.7796328Z               "line": 182
2026-06-21T03:31:34.7796434Z             },
2026-06-21T03:31:34.7796545Z             {
2026-06-21T03:31:34.7796674Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.7796780Z               "line": 113
2026-06-21T03:31:34.7796884Z             }
2026-06-21T03:31:34.7796989Z           ]
2026-06-21T03:31:34.7797085Z         },
2026-06-21T03:31:34.7797199Z         "int": {
2026-06-21T03:31:34.7797308Z           "complete": true,
2026-06-21T03:31:34.7797418Z           "evidence": [
2026-06-21T03:31:34.7797518Z             {
2026-06-21T03:31:34.7797667Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7797776Z               "line": 572
2026-06-21T03:31:34.7797875Z             }
2026-06-21T03:31:34.7797986Z           ]
2026-06-21T03:31:34.7798091Z         },
2026-06-21T03:31:34.7798190Z         "unit": {
2026-06-21T03:31:34.7798301Z           "complete": true,
2026-06-21T03:31:34.7798410Z           "evidence": [
2026-06-21T03:31:34.7798519Z             {
2026-06-21T03:31:34.7798664Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:31:34.7798781Z               "line": 86
2026-06-21T03:31:34.7798882Z             }
2026-06-21T03:31:34.7799054Z           ]
2026-06-21T03:31:34.7799157Z         }
2026-06-21T03:31:34.7799262Z       }
2026-06-21T03:31:34.7799359Z     },
2026-06-21T03:31:34.7799458Z     {
2026-06-21T03:31:34.7799572Z       "id": "REQ-INFRA-1",
2026-06-21T03:31:34.7799782Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T03:31:34.7799897Z       "requiredStages": [],
2026-06-21T03:31:34.7800002Z       "stages": {
2026-06-21T03:31:34.7800106Z         "doc": {
2026-06-21T03:31:34.7800226Z           "complete": false,
2026-06-21T03:31:34.7800326Z           "evidence": []
2026-06-21T03:31:34.7800435Z         },
2026-06-21T03:31:34.7800546Z         "impl": {
2026-06-21T03:31:34.7800646Z           "complete": false,
2026-06-21T03:31:34.7800755Z           "evidence": []
2026-06-21T03:31:34.7800861Z         },
2026-06-21T03:31:34.7800965Z         "int": {
2026-06-21T03:31:34.7801175Z           "complete": false,
2026-06-21T03:31:34.7801280Z           "evidence": []
2026-06-21T03:31:34.7801388Z         },
2026-06-21T03:31:34.7801498Z         "unit": {
2026-06-21T03:31:34.7801616Z           "complete": false,
2026-06-21T03:31:34.7801714Z           "evidence": []
2026-06-21T03:31:34.7801815Z         }
2026-06-21T03:31:34.7801906Z       }
2026-06-21T03:31:34.7802001Z     },
2026-06-21T03:31:34.7802101Z     {
2026-06-21T03:31:34.7802207Z       "id": "REQ-INST-1",
2026-06-21T03:31:34.7802386Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T03:31:34.7802497Z       "requiredStages": [],
2026-06-21T03:31:34.7802701Z       "stages": {
2026-06-21T03:31:34.7802807Z         "doc": {
2026-06-21T03:31:34.7802921Z           "complete": false,
2026-06-21T03:31:34.7803040Z           "evidence": []
2026-06-21T03:31:34.7803136Z         },
2026-06-21T03:31:34.7803245Z         "impl": {
2026-06-21T03:31:34.7803359Z           "complete": false,
2026-06-21T03:31:34.7803475Z           "evidence": []
2026-06-21T03:31:34.7803579Z         },
2026-06-21T03:31:34.7803689Z         "int": {
2026-06-21T03:31:34.7803804Z           "complete": false,
2026-06-21T03:31:34.7803898Z           "evidence": []
2026-06-21T03:31:34.7803994Z         },
2026-06-21T03:31:34.7804095Z         "unit": {
2026-06-21T03:31:34.7804204Z           "complete": false,
2026-06-21T03:31:34.7804312Z           "evidence": []
2026-06-21T03:31:34.7804422Z         }
2026-06-21T03:31:34.7804516Z       }
2026-06-21T03:31:34.7804624Z     },
2026-06-21T03:31:34.7804730Z     {
2026-06-21T03:31:34.7804845Z       "id": "REQ-INST-10",
2026-06-21T03:31:34.7805093Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T03:31:34.7805216Z       "requiredStages": [
2026-06-21T03:31:34.7805316Z         "impl",
2026-06-21T03:31:34.7805427Z         "unit"
2026-06-21T03:31:34.7805526Z       ],
2026-06-21T03:31:34.7805631Z       "stages": {
2026-06-21T03:31:34.7805737Z         "doc": {
2026-06-21T03:31:34.7805855Z           "complete": false,
2026-06-21T03:31:34.7805960Z           "evidence": []
2026-06-21T03:31:34.7806061Z         },
2026-06-21T03:31:34.7806165Z         "impl": {
2026-06-21T03:31:34.7806275Z           "complete": true,
2026-06-21T03:31:34.7806390Z           "evidence": [
2026-06-21T03:31:34.7806489Z             {
2026-06-21T03:31:34.7806638Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7806742Z               "line": 648
2026-06-21T03:31:34.7806856Z             },
2026-06-21T03:31:34.7806960Z             {
2026-06-21T03:31:34.7807106Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7807219Z               "line": 725
2026-06-21T03:31:34.7807321Z             },
2026-06-21T03:31:34.7807421Z             {
2026-06-21T03:31:34.7807568Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7807674Z               "line": 13
2026-06-21T03:31:34.7807777Z             },
2026-06-21T03:31:34.7807883Z             {
2026-06-21T03:31:34.7808036Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7808145Z               "line": 67
2026-06-21T03:31:34.7808251Z             },
2026-06-21T03:31:34.7808355Z             {
2026-06-21T03:31:34.7808484Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7808590Z               "line": 18
2026-06-21T03:31:34.7808694Z             },
2026-06-21T03:31:34.7808794Z             {
2026-06-21T03:31:34.7808919Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7809123Z               "line": 444
2026-06-21T03:31:34.7809224Z             }
2026-06-21T03:31:34.7809327Z           ]
2026-06-21T03:31:34.7809442Z         },
2026-06-21T03:31:34.7809558Z         "int": {
2026-06-21T03:31:34.7809675Z           "complete": false,
2026-06-21T03:31:34.7809779Z           "evidence": []
2026-06-21T03:31:34.7809875Z         },
2026-06-21T03:31:34.7809980Z         "unit": {
2026-06-21T03:31:34.7810094Z           "complete": true,
2026-06-21T03:31:34.7810323Z           "evidence": [
2026-06-21T03:31:34.7810413Z             {
2026-06-21T03:31:34.7810557Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7810661Z               "line": 932
2026-06-21T03:31:34.7810767Z             },
2026-06-21T03:31:34.7810867Z             {
2026-06-21T03:31:34.7811014Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7811130Z               "line": 1309
2026-06-21T03:31:34.7811224Z             },
2026-06-21T03:31:34.7811325Z             {
2026-06-21T03:31:34.7811460Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7811668Z               "line": 1320
2026-06-21T03:31:34.7811770Z             },
2026-06-21T03:31:34.7811868Z             {
2026-06-21T03:31:34.7812015Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7812115Z               "line": 1336
2026-06-21T03:31:34.7812223Z             },
2026-06-21T03:31:34.7812327Z             {
2026-06-21T03:31:34.7812471Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7812580Z               "line": 1352
2026-06-21T03:31:34.7812689Z             },
2026-06-21T03:31:34.7812791Z             {
2026-06-21T03:31:34.7812932Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7813044Z               "line": 1374
2026-06-21T03:31:34.7813143Z             },
2026-06-21T03:31:34.7813247Z             {
2026-06-21T03:31:34.7813386Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7813491Z               "line": 1679
2026-06-21T03:31:34.7813590Z             },
2026-06-21T03:31:34.7813697Z             {
2026-06-21T03:31:34.7813839Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7813949Z               "line": 130
2026-06-21T03:31:34.7814054Z             },
2026-06-21T03:31:34.7814158Z             {
2026-06-21T03:31:34.7814293Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7814402Z               "line": 167
2026-06-21T03:31:34.7814502Z             },
2026-06-21T03:31:34.7814603Z             {
2026-06-21T03:31:34.7814740Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7814849Z               "line": 175
2026-06-21T03:31:34.7814959Z             },
2026-06-21T03:31:34.7815062Z             {
2026-06-21T03:31:34.7815184Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:31:34.7815295Z               "line": 183
2026-06-21T03:31:34.7815391Z             },
2026-06-21T03:31:34.7815499Z             {
2026-06-21T03:31:34.7815634Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7815748Z               "line": 896
2026-06-21T03:31:34.7815847Z             }
2026-06-21T03:31:34.7815949Z           ]
2026-06-21T03:31:34.7816049Z         }
2026-06-21T03:31:34.7816152Z       }
2026-06-21T03:31:34.7816254Z     },
2026-06-21T03:31:34.7816353Z     {
2026-06-21T03:31:34.7816462Z       "id": "REQ-INST-11",
2026-06-21T03:31:34.7816691Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T03:31:34.7816806Z       "requiredStages": [
2026-06-21T03:31:34.7816907Z         "impl",
2026-06-21T03:31:34.7817020Z         "unit"
2026-06-21T03:31:34.7817121Z       ],
2026-06-21T03:31:34.7817232Z       "stages": {
2026-06-21T03:31:34.7817340Z         "doc": {
2026-06-21T03:31:34.7817444Z           "complete": false,
2026-06-21T03:31:34.7817558Z           "evidence": []
2026-06-21T03:31:34.7817648Z         },
2026-06-21T03:31:34.7817756Z         "impl": {
2026-06-21T03:31:34.7817861Z           "complete": true,
2026-06-21T03:31:34.7817967Z           "evidence": [
2026-06-21T03:31:34.7818071Z             {
2026-06-21T03:31:34.7818206Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7818328Z               "line": 514
2026-06-21T03:31:34.7818428Z             },
2026-06-21T03:31:34.7818539Z             {
2026-06-21T03:31:34.7818695Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7818887Z               "line": 297
2026-06-21T03:31:34.7819067Z             },
2026-06-21T03:31:34.7819164Z             {
2026-06-21T03:31:34.7819301Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:31:34.7819426Z               "line": 59
2026-06-21T03:31:34.7819530Z             },
2026-06-21T03:31:34.7819630Z             {
2026-06-21T03:31:34.7819765Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7819878Z               "line": 5291
2026-06-21T03:31:34.7819983Z             },
2026-06-21T03:31:34.7820085Z             {
2026-06-21T03:31:34.7820202Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7820407Z               "line": 7137
2026-06-21T03:31:34.7820517Z             }
2026-06-21T03:31:34.7820621Z           ]
2026-06-21T03:31:34.7820726Z         },
2026-06-21T03:31:34.7820827Z         "int": {
2026-06-21T03:31:34.7820940Z           "complete": false,
2026-06-21T03:31:34.7821037Z           "evidence": []
2026-06-21T03:31:34.7821141Z         },
2026-06-21T03:31:34.7821245Z         "unit": {
2026-06-21T03:31:34.7821356Z           "complete": true,
2026-06-21T03:31:34.7821461Z           "evidence": [
2026-06-21T03:31:34.7821560Z             {
2026-06-21T03:31:34.7821710Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7821818Z               "line": 1479
2026-06-21T03:31:34.7821923Z             },
2026-06-21T03:31:34.7822024Z             {
2026-06-21T03:31:34.7822171Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7822276Z               "line": 1512
2026-06-21T03:31:34.7822377Z             },
2026-06-21T03:31:34.7822485Z             {
2026-06-21T03:31:34.7822627Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7822731Z               "line": 527
2026-06-21T03:31:34.7822840Z             },
2026-06-21T03:31:34.7822940Z             {
2026-06-21T03:31:34.7823079Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:31:34.7823192Z               "line": 160
2026-06-21T03:31:34.7823303Z             },
2026-06-21T03:31:34.7823403Z             {
2026-06-21T03:31:34.7823550Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:31:34.7823656Z               "line": 190
2026-06-21T03:31:34.7823760Z             },
2026-06-21T03:31:34.7823860Z             {
2026-06-21T03:31:34.7823984Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:31:34.7824094Z               "line": 225
2026-06-21T03:31:34.7824199Z             },
2026-06-21T03:31:34.7824304Z             {
2026-06-21T03:31:34.7824437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7824553Z               "line": 7994
2026-06-21T03:31:34.7824661Z             }
2026-06-21T03:31:34.7824766Z           ]
2026-06-21T03:31:34.7824872Z         }
2026-06-21T03:31:34.7824976Z       }
2026-06-21T03:31:34.7825076Z     },
2026-06-21T03:31:34.7825177Z     {
2026-06-21T03:31:34.7825286Z       "id": "REQ-INST-12",
2026-06-21T03:31:34.7825613Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T03:31:34.7825730Z       "requiredStages": [
2026-06-21T03:31:34.7825841Z         "impl",
2026-06-21T03:31:34.7825936Z         "unit"
2026-06-21T03:31:34.7826045Z       ],
2026-06-21T03:31:34.7826151Z       "stages": {
2026-06-21T03:31:34.7826256Z         "doc": {
2026-06-21T03:31:34.7826374Z           "complete": false,
2026-06-21T03:31:34.7826485Z           "evidence": []
2026-06-21T03:31:34.7826589Z         },
2026-06-21T03:31:34.7826689Z         "impl": {
2026-06-21T03:31:34.7826800Z           "complete": true,
2026-06-21T03:31:34.7826923Z           "evidence": [
2026-06-21T03:31:34.7827027Z             {
2026-06-21T03:31:34.7827176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7827285Z               "line": 566
2026-06-21T03:31:34.7827395Z             },
2026-06-21T03:31:34.7827501Z             {
2026-06-21T03:31:34.7827763Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7827872Z               "line": 659
2026-06-21T03:31:34.7827971Z             },
2026-06-21T03:31:34.7828076Z             {
2026-06-21T03:31:34.7828212Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7828321Z               "line": 739
2026-06-21T03:31:34.7828426Z             },
2026-06-21T03:31:34.7828537Z             {
2026-06-21T03:31:34.7828674Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7828775Z               "line": 96
2026-06-21T03:31:34.7828870Z             },
2026-06-21T03:31:34.7829056Z             {
2026-06-21T03:31:34.7829303Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7829447Z               "line": 269
2026-06-21T03:31:34.7829556Z             },
2026-06-21T03:31:34.7829662Z             {
2026-06-21T03:31:34.7829809Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7829924Z               "line": 148
2026-06-21T03:31:34.7830029Z             }
2026-06-21T03:31:34.7830133Z           ]
2026-06-21T03:31:34.7830238Z         },
2026-06-21T03:31:34.7830344Z         "int": {
2026-06-21T03:31:34.7830461Z           "complete": false,
2026-06-21T03:31:34.7830558Z           "evidence": []
2026-06-21T03:31:34.7830669Z         },
2026-06-21T03:31:34.7830772Z         "unit": {
2026-06-21T03:31:34.7830894Z           "complete": true,
2026-06-21T03:31:34.7830996Z           "evidence": [
2026-06-21T03:31:34.7831101Z             {
2026-06-21T03:31:34.7831258Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7831363Z               "line": 1554
2026-06-21T03:31:34.7831476Z             },
2026-06-21T03:31:34.7831578Z             {
2026-06-21T03:31:34.7831726Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7831839Z               "line": 1577
2026-06-21T03:31:34.7831945Z             },
2026-06-21T03:31:34.7832049Z             {
2026-06-21T03:31:34.7832197Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7832303Z               "line": 1614
2026-06-21T03:31:34.7832407Z             },
2026-06-21T03:31:34.7832512Z             {
2026-06-21T03:31:34.7832664Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.7832769Z               "line": 457
2026-06-21T03:31:34.7832880Z             },
2026-06-21T03:31:34.7832979Z             {
2026-06-21T03:31:34.7833130Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7833245Z               "line": 185
2026-06-21T03:31:34.7833352Z             },
2026-06-21T03:31:34.7833461Z             {
2026-06-21T03:31:34.7833611Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7833729Z               "line": 206
2026-06-21T03:31:34.7833834Z             },
2026-06-21T03:31:34.7833939Z             {
2026-06-21T03:31:34.7834081Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7834188Z               "line": 232
2026-06-21T03:31:34.7834301Z             }
2026-06-21T03:31:34.7834396Z           ]
2026-06-21T03:31:34.7834498Z         }
2026-06-21T03:31:34.7834592Z       }
2026-06-21T03:31:34.7834697Z     },
2026-06-21T03:31:34.7834798Z     {
2026-06-21T03:31:34.7834916Z       "id": "REQ-INST-13",
2026-06-21T03:31:34.7835127Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T03:31:34.7835236Z       "requiredStages": [
2026-06-21T03:31:34.7835345Z         "impl",
2026-06-21T03:31:34.7835452Z         "unit"
2026-06-21T03:31:34.7835545Z       ],
2026-06-21T03:31:34.7835656Z       "stages": {
2026-06-21T03:31:34.7835757Z         "doc": {
2026-06-21T03:31:34.7835884Z           "complete": false,
2026-06-21T03:31:34.7835992Z           "evidence": []
2026-06-21T03:31:34.7836103Z         },
2026-06-21T03:31:34.7836205Z         "impl": {
2026-06-21T03:31:34.7836319Z           "complete": true,
2026-06-21T03:31:34.7836429Z           "evidence": [
2026-06-21T03:31:34.7836633Z             {
2026-06-21T03:31:34.7836773Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7836887Z               "line": 100
2026-06-21T03:31:34.7836992Z             },
2026-06-21T03:31:34.7837097Z             {
2026-06-21T03:31:34.7837244Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7837350Z               "line": 171
2026-06-21T03:31:34.7837459Z             }
2026-06-21T03:31:34.7837564Z           ]
2026-06-21T03:31:34.7837650Z         },
2026-06-21T03:31:34.7837760Z         "int": {
2026-06-21T03:31:34.7837869Z           "complete": false,
2026-06-21T03:31:34.7837990Z           "evidence": []
2026-06-21T03:31:34.7838155Z         },
2026-06-21T03:31:34.7838271Z         "unit": {
2026-06-21T03:31:34.7838375Z           "complete": true,
2026-06-21T03:31:34.7838484Z           "evidence": [
2026-06-21T03:31:34.7838588Z             {
2026-06-21T03:31:34.7838735Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7838843Z               "line": 261
2026-06-21T03:31:34.7839026Z             },
2026-06-21T03:31:34.7839130Z             {
2026-06-21T03:31:34.7839278Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:31:34.7839392Z               "line": 279
2026-06-21T03:31:34.7839496Z             }
2026-06-21T03:31:34.7839593Z           ]
2026-06-21T03:31:34.7839697Z         }
2026-06-21T03:31:34.7839801Z       }
2026-06-21T03:31:34.7839913Z     },
2026-06-21T03:31:34.7840017Z     {
2026-06-21T03:31:34.7840130Z       "id": "REQ-INST-14",
2026-06-21T03:31:34.7840542Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T03:31:34.7840651Z       "requiredStages": [
2026-06-21T03:31:34.7840756Z         "doc",
2026-06-21T03:31:34.7840852Z         "impl",
2026-06-21T03:31:34.7840956Z         "unit"
2026-06-21T03:31:34.7841061Z       ],
2026-06-21T03:31:34.7841167Z       "stages": {
2026-06-21T03:31:34.7841276Z         "doc": {
2026-06-21T03:31:34.7841384Z           "complete": true,
2026-06-21T03:31:34.7841498Z           "evidence": [
2026-06-21T03:31:34.7841599Z             {
2026-06-21T03:31:34.7841722Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7841837Z               "line": 588
2026-06-21T03:31:34.7841937Z             },
2026-06-21T03:31:34.7842041Z             {
2026-06-21T03:31:34.7842167Z               "path": "docs/STORAGE.md",
2026-06-21T03:31:34.7842276Z               "line": 49
2026-06-21T03:31:34.7842385Z             }
2026-06-21T03:31:34.7842491Z           ]
2026-06-21T03:31:34.7842599Z         },
2026-06-21T03:31:34.7842704Z         "impl": {
2026-06-21T03:31:34.7842820Z           "complete": true,
2026-06-21T03:31:34.7842928Z           "evidence": [
2026-06-21T03:31:34.7843029Z             {
2026-06-21T03:31:34.7843178Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7843291Z               "line": 410
2026-06-21T03:31:34.7843396Z             },
2026-06-21T03:31:34.7843507Z             {
2026-06-21T03:31:34.7843657Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7843767Z               "line": 367
2026-06-21T03:31:34.7843861Z             },
2026-06-21T03:31:34.7843965Z             {
2026-06-21T03:31:34.7844108Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7844227Z               "line": 293
2026-06-21T03:31:34.7844331Z             },
2026-06-21T03:31:34.7844438Z             {
2026-06-21T03:31:34.7844565Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7844675Z               "line": 1577
2026-06-21T03:31:34.7844776Z             }
2026-06-21T03:31:34.7844889Z           ]
2026-06-21T03:31:34.7844990Z         },
2026-06-21T03:31:34.7845096Z         "int": {
2026-06-21T03:31:34.7845209Z           "complete": false,
2026-06-21T03:31:34.7845309Z           "evidence": []
2026-06-21T03:31:34.7845420Z         },
2026-06-21T03:31:34.7845519Z         "unit": {
2026-06-21T03:31:34.7845739Z           "complete": true,
2026-06-21T03:31:34.7845858Z           "evidence": [
2026-06-21T03:31:34.7845959Z             {
2026-06-21T03:31:34.7846115Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7846225Z               "line": 1163
2026-06-21T03:31:34.7846331Z             },
2026-06-21T03:31:34.7846439Z             {
2026-06-21T03:31:34.7846596Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7846700Z               "line": 944
2026-06-21T03:31:34.7846808Z             },
2026-06-21T03:31:34.7846913Z             {
2026-06-21T03:31:34.7847057Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7847271Z               "line": 1205
2026-06-21T03:31:34.7847371Z             },
2026-06-21T03:31:34.7847475Z             {
2026-06-21T03:31:34.7847620Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7847724Z               "line": 659
2026-06-21T03:31:34.7847833Z             },
2026-06-21T03:31:34.7847939Z             {
2026-06-21T03:31:34.7848072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7848181Z               "line": 8070
2026-06-21T03:31:34.7848287Z             }
2026-06-21T03:31:34.7848391Z           ]
2026-06-21T03:31:34.7848486Z         }
2026-06-21T03:31:34.7848593Z       }
2026-06-21T03:31:34.7848682Z     },
2026-06-21T03:31:34.7848782Z     {
2026-06-21T03:31:34.7848894Z       "id": "REQ-INST-15",
2026-06-21T03:31:34.7849737Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T03:31:34.7849867Z       "requiredStages": [
2026-06-21T03:31:34.7849962Z         "doc",
2026-06-21T03:31:34.7850075Z         "impl",
2026-06-21T03:31:34.7850181Z         "unit"
2026-06-21T03:31:34.7850276Z       ],
2026-06-21T03:31:34.7850390Z       "stages": {
2026-06-21T03:31:34.7850487Z         "doc": {
2026-06-21T03:31:34.7850605Z           "complete": true,
2026-06-21T03:31:34.7850709Z           "evidence": [
2026-06-21T03:31:34.7850811Z             {
2026-06-21T03:31:34.7851015Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T03:31:34.7851122Z               "line": 3
2026-06-21T03:31:34.7851230Z             }
2026-06-21T03:31:34.7851330Z           ]
2026-06-21T03:31:34.7851436Z         },
2026-06-21T03:31:34.7851535Z         "impl": {
2026-06-21T03:31:34.7851650Z           "complete": true,
2026-06-21T03:31:34.7851746Z           "evidence": [
2026-06-21T03:31:34.7851850Z             {
2026-06-21T03:31:34.7852006Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7852116Z               "line": 353
2026-06-21T03:31:34.7852226Z             },
2026-06-21T03:31:34.7852325Z             {
2026-06-21T03:31:34.7852465Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.7852578Z               "line": 60
2026-06-21T03:31:34.7852688Z             },
2026-06-21T03:31:34.7852789Z             {
2026-06-21T03:31:34.7852930Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7853041Z               "line": 368
2026-06-21T03:31:34.7853136Z             },
2026-06-21T03:31:34.7853236Z             {
2026-06-21T03:31:34.7853385Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7853493Z               "line": 417
2026-06-21T03:31:34.7853603Z             },
2026-06-21T03:31:34.7853709Z             {
2026-06-21T03:31:34.7853856Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7853966Z               "line": 19
2026-06-21T03:31:34.7854076Z             },
2026-06-21T03:31:34.7854179Z             {
2026-06-21T03:31:34.7854313Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7854426Z               "line": 70
2026-06-21T03:31:34.7854535Z             },
2026-06-21T03:31:34.7854741Z             {
2026-06-21T03:31:34.7854863Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7854973Z               "line": 96
2026-06-21T03:31:34.7855079Z             },
2026-06-21T03:31:34.7855187Z             {
2026-06-21T03:31:34.7855322Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7855431Z               "line": 121
2026-06-21T03:31:34.7855540Z             },
2026-06-21T03:31:34.7855637Z             {
2026-06-21T03:31:34.7855779Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7855884Z               "line": 172
2026-06-21T03:31:34.7855985Z             },
2026-06-21T03:31:34.7856094Z             {
2026-06-21T03:31:34.7856332Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7856451Z               "line": 178
2026-06-21T03:31:34.7856557Z             },
2026-06-21T03:31:34.7856661Z             {
2026-06-21T03:31:34.7856800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7856915Z               "line": 1469
2026-06-21T03:31:34.7857009Z             }
2026-06-21T03:31:34.7857108Z           ]
2026-06-21T03:31:34.7857213Z         },
2026-06-21T03:31:34.7857321Z         "int": {
2026-06-21T03:31:34.7857430Z           "complete": false,
2026-06-21T03:31:34.7857535Z           "evidence": []
2026-06-21T03:31:34.7857636Z         },
2026-06-21T03:31:34.7857745Z         "unit": {
2026-06-21T03:31:34.7857846Z           "complete": true,
2026-06-21T03:31:34.7857970Z           "evidence": [
2026-06-21T03:31:34.7858069Z             {
2026-06-21T03:31:34.7858222Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7858340Z               "line": 577
2026-06-21T03:31:34.7858446Z             },
2026-06-21T03:31:34.7858551Z             {
2026-06-21T03:31:34.7858703Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.7858810Z               "line": 638
2026-06-21T03:31:34.7858913Z             },
2026-06-21T03:31:34.7859105Z             {
2026-06-21T03:31:34.7859251Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7859357Z               "line": 213
2026-06-21T03:31:34.7859477Z             },
2026-06-21T03:31:34.7859580Z             {
2026-06-21T03:31:34.7859723Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7859836Z               "line": 249
2026-06-21T03:31:34.7859940Z             },
2026-06-21T03:31:34.7860045Z             {
2026-06-21T03:31:34.7860170Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7860278Z               "line": 262
2026-06-21T03:31:34.7860383Z             },
2026-06-21T03:31:34.7860489Z             {
2026-06-21T03:31:34.7860617Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:31:34.7860728Z               "line": 338
2026-06-21T03:31:34.7860827Z             },
2026-06-21T03:31:34.7860936Z             {
2026-06-21T03:31:34.7861075Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.7861179Z               "line": 690
2026-06-21T03:31:34.7861284Z             },
2026-06-21T03:31:34.7861390Z             {
2026-06-21T03:31:34.7861523Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7861628Z               "line": 8007
2026-06-21T03:31:34.7861733Z             },
2026-06-21T03:31:34.7861837Z             {
2026-06-21T03:31:34.7861967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7862072Z               "line": 9837
2026-06-21T03:31:34.7864811Z             }
2026-06-21T03:31:34.7864944Z           ]
2026-06-21T03:31:34.7865056Z         }
2026-06-21T03:31:34.7865156Z       }
2026-06-21T03:31:34.7865262Z     },
2026-06-21T03:31:34.7865353Z     {
2026-06-21T03:31:34.7865481Z       "id": "REQ-INST-2",
2026-06-21T03:31:34.7865644Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T03:31:34.7865757Z       "requiredStages": [
2026-06-21T03:31:34.7865868Z         "impl",
2026-06-21T03:31:34.7865977Z         "unit"
2026-06-21T03:31:34.7866081Z       ],
2026-06-21T03:31:34.7866192Z       "stages": {
2026-06-21T03:31:34.7866464Z         "doc": {
2026-06-21T03:31:34.7866578Z           "complete": false,
2026-06-21T03:31:34.7866692Z           "evidence": []
2026-06-21T03:31:34.7866798Z         },
2026-06-21T03:31:34.7866902Z         "impl": {
2026-06-21T03:31:34.7867021Z           "complete": true,
2026-06-21T03:31:34.7867127Z           "evidence": [
2026-06-21T03:31:34.7867236Z             {
2026-06-21T03:31:34.7867389Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7867499Z               "line": 108
2026-06-21T03:31:34.7867592Z             },
2026-06-21T03:31:34.7867696Z             {
2026-06-21T03:31:34.7867844Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7868048Z               "line": 28
2026-06-21T03:31:34.7868148Z             },
2026-06-21T03:31:34.7868248Z             {
2026-06-21T03:31:34.7868396Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7868501Z               "line": 74
2026-06-21T03:31:34.7868610Z             },
2026-06-21T03:31:34.7868711Z             {
2026-06-21T03:31:34.7868850Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7869040Z               "line": 96
2026-06-21T03:31:34.7869144Z             },
2026-06-21T03:31:34.7869249Z             {
2026-06-21T03:31:34.7869394Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.7869501Z               "line": 86
2026-06-21T03:31:34.7869598Z             },
2026-06-21T03:31:34.7869703Z             {
2026-06-21T03:31:34.7869835Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:31:34.7869941Z               "line": 118
2026-06-21T03:31:34.7870052Z             }
2026-06-21T03:31:34.7870150Z           ]
2026-06-21T03:31:34.7870244Z         },
2026-06-21T03:31:34.7870355Z         "int": {
2026-06-21T03:31:34.7870462Z           "complete": false,
2026-06-21T03:31:34.7870571Z           "evidence": []
2026-06-21T03:31:34.7870677Z         },
2026-06-21T03:31:34.7870772Z         "unit": {
2026-06-21T03:31:34.7870890Z           "complete": true,
2026-06-21T03:31:34.7870997Z           "evidence": [
2026-06-21T03:31:34.7871106Z             {
2026-06-21T03:31:34.7871239Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:31:34.7871349Z               "line": 250
2026-06-21T03:31:34.7871453Z             },
2026-06-21T03:31:34.7871554Z             {
2026-06-21T03:31:34.7871683Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.7871792Z               "line": 280
2026-06-21T03:31:34.7871902Z             }
2026-06-21T03:31:34.7872007Z           ]
2026-06-21T03:31:34.7872111Z         }
2026-06-21T03:31:34.7872217Z       }
2026-06-21T03:31:34.7872321Z     },
2026-06-21T03:31:34.7872426Z     {
2026-06-21T03:31:34.7872527Z       "id": "REQ-INST-3",
2026-06-21T03:31:34.7872702Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T03:31:34.7872823Z       "requiredStages": [
2026-06-21T03:31:34.7872933Z         "doc",
2026-06-21T03:31:34.7873050Z         "impl",
2026-06-21T03:31:34.7873140Z         "unit"
2026-06-21T03:31:34.7873246Z       ],
2026-06-21T03:31:34.7873350Z       "stages": {
2026-06-21T03:31:34.7873465Z         "doc": {
2026-06-21T03:31:34.7873570Z           "complete": true,
2026-06-21T03:31:34.7873684Z           "evidence": [
2026-06-21T03:31:34.7873789Z             {
2026-06-21T03:31:34.7873913Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T03:31:34.7874022Z               "line": 3
2026-06-21T03:31:34.7874123Z             }
2026-06-21T03:31:34.7874223Z           ]
2026-06-21T03:31:34.7874328Z         },
2026-06-21T03:31:34.7874433Z         "impl": {
2026-06-21T03:31:34.7874548Z           "complete": true,
2026-06-21T03:31:34.7874657Z           "evidence": [
2026-06-21T03:31:34.7874762Z             {
2026-06-21T03:31:34.7874914Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7875028Z               "line": 59
2026-06-21T03:31:34.7875121Z             },
2026-06-21T03:31:34.7875229Z             {
2026-06-21T03:31:34.7875490Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.7875593Z               "line": 480
2026-06-21T03:31:34.7875702Z             },
2026-06-21T03:31:34.7875803Z             {
2026-06-21T03:31:34.7875955Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7876060Z               "line": 254
2026-06-21T03:31:34.7876170Z             },
2026-06-21T03:31:34.7876270Z             {
2026-06-21T03:31:34.7876414Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7876528Z               "line": 384
2026-06-21T03:31:34.7876627Z             },
2026-06-21T03:31:34.7876828Z             {
2026-06-21T03:31:34.7876971Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7877086Z               "line": 418
2026-06-21T03:31:34.7877186Z             },
2026-06-21T03:31:34.7877285Z             {
2026-06-21T03:31:34.7877425Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T03:31:34.7877534Z               "line": 74
2026-06-21T03:31:34.7877639Z             },
2026-06-21T03:31:34.7877740Z             {
2026-06-21T03:31:34.7877891Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7878002Z               "line": 234
2026-06-21T03:31:34.7878097Z             },
2026-06-21T03:31:34.7878205Z             {
2026-06-21T03:31:34.7878357Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7878470Z               "line": 396
2026-06-21T03:31:34.7878569Z             },
2026-06-21T03:31:34.7878675Z             {
2026-06-21T03:31:34.7878822Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7879023Z               "line": 45
2026-06-21T03:31:34.7879128Z             },
2026-06-21T03:31:34.7879232Z             {
2026-06-21T03:31:34.7879380Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7879484Z               "line": 114
2026-06-21T03:31:34.7879591Z             },
2026-06-21T03:31:34.7879700Z             {
2026-06-21T03:31:34.7879843Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7879949Z               "line": 152
2026-06-21T03:31:34.7880043Z             },
2026-06-21T03:31:34.7880143Z             {
2026-06-21T03:31:34.7880283Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7880381Z               "line": 168
2026-06-21T03:31:34.7880482Z             },
2026-06-21T03:31:34.7880583Z             {
2026-06-21T03:31:34.7880724Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7880833Z               "line": 178
2026-06-21T03:31:34.7880934Z             },
2026-06-21T03:31:34.7881036Z             {
2026-06-21T03:31:34.7881175Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7881285Z               "line": 210
2026-06-21T03:31:34.7881379Z             },
2026-06-21T03:31:34.7881475Z             {
2026-06-21T03:31:34.7881618Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7881727Z               "line": 287
2026-06-21T03:31:34.7881838Z             },
2026-06-21T03:31:34.7881938Z             {
2026-06-21T03:31:34.7882080Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7882186Z               "line": 311
2026-06-21T03:31:34.7882290Z             },
2026-06-21T03:31:34.7882395Z             {
2026-06-21T03:31:34.7882544Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7882653Z               "line": 389
2026-06-21T03:31:34.7882753Z             },
2026-06-21T03:31:34.7882859Z             {
2026-06-21T03:31:34.7882991Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7883111Z               "line": 438
2026-06-21T03:31:34.7883211Z             },
2026-06-21T03:31:34.7883306Z             {
2026-06-21T03:31:34.7883460Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T03:31:34.7883563Z               "line": 37
2026-06-21T03:31:34.7883667Z             },
2026-06-21T03:31:34.7883873Z             {
2026-06-21T03:31:34.7884025Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7884126Z               "line": 62
2026-06-21T03:31:34.7884235Z             },
2026-06-21T03:31:34.7884329Z             {
2026-06-21T03:31:34.7884469Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7884573Z               "line": 279
2026-06-21T03:31:34.7884674Z             },
2026-06-21T03:31:34.7884783Z             {
2026-06-21T03:31:34.7884911Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7885017Z               "line": 1848
2026-06-21T03:31:34.7885122Z             }
2026-06-21T03:31:34.7885318Z           ]
2026-06-21T03:31:34.7885422Z         },
2026-06-21T03:31:34.7885526Z         "int": {
2026-06-21T03:31:34.7885637Z           "complete": false,
2026-06-21T03:31:34.7885747Z           "evidence": []
2026-06-21T03:31:34.7885855Z         },
2026-06-21T03:31:34.7885964Z         "unit": {
2026-06-21T03:31:34.7886083Z           "complete": true,
2026-06-21T03:31:34.7886196Z           "evidence": [
2026-06-21T03:31:34.7886291Z             {
2026-06-21T03:31:34.7886445Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.7886553Z               "line": 360
2026-06-21T03:31:34.7886659Z             },
2026-06-21T03:31:34.7886764Z             {
2026-06-21T03:31:34.7886911Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7887017Z               "line": 837
2026-06-21T03:31:34.7887121Z             },
2026-06-21T03:31:34.7887226Z             {
2026-06-21T03:31:34.7887369Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7887478Z               "line": 894
2026-06-21T03:31:34.7887584Z             },
2026-06-21T03:31:34.7887679Z             {
2026-06-21T03:31:34.7887826Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7887923Z               "line": 889
2026-06-21T03:31:34.7888027Z             },
2026-06-21T03:31:34.7888136Z             {
2026-06-21T03:31:34.7888276Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.7888389Z               "line": 1014
2026-06-21T03:31:34.7888485Z             },
2026-06-21T03:31:34.7888591Z             {
2026-06-21T03:31:34.7888741Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7888851Z               "line": 1264
2026-06-21T03:31:34.7889030Z             },
2026-06-21T03:31:34.7889134Z             {
2026-06-21T03:31:34.7889278Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7889396Z               "line": 1405
2026-06-21T03:31:34.7889492Z             },
2026-06-21T03:31:34.7889593Z             {
2026-06-21T03:31:34.7889730Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7889846Z               "line": 449
2026-06-21T03:31:34.7889950Z             },
2026-06-21T03:31:34.7890054Z             {
2026-06-21T03:31:34.7890194Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7890313Z               "line": 485
2026-06-21T03:31:34.7890408Z             },
2026-06-21T03:31:34.7890514Z             {
2026-06-21T03:31:34.7890651Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7890746Z               "line": 540
2026-06-21T03:31:34.7890852Z             },
2026-06-21T03:31:34.7890955Z             {
2026-06-21T03:31:34.7891096Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7891200Z               "line": 697
2026-06-21T03:31:34.7891303Z             },
2026-06-21T03:31:34.7891408Z             {
2026-06-21T03:31:34.7891541Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7891644Z               "line": 931
2026-06-21T03:31:34.7891740Z             },
2026-06-21T03:31:34.7891850Z             {
2026-06-21T03:31:34.7891987Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7892083Z               "line": 945
2026-06-21T03:31:34.7892278Z             },
2026-06-21T03:31:34.7892374Z             {
2026-06-21T03:31:34.7892522Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7892626Z               "line": 1290
2026-06-21T03:31:34.7892737Z             },
2026-06-21T03:31:34.7892836Z             {
2026-06-21T03:31:34.7892970Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.7893081Z               "line": 609
2026-06-21T03:31:34.7893185Z             },
2026-06-21T03:31:34.7893289Z             {
2026-06-21T03:31:34.7893419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7893528Z               "line": 8031
2026-06-21T03:31:34.7893628Z             }
2026-06-21T03:31:34.7893837Z           ]
2026-06-21T03:31:34.7893938Z         }
2026-06-21T03:31:34.7894044Z       }
2026-06-21T03:31:34.7894146Z     },
2026-06-21T03:31:34.7894250Z     {
2026-06-21T03:31:34.7894357Z       "id": "REQ-INST-4",
2026-06-21T03:31:34.7894551Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T03:31:34.7894662Z       "requiredStages": [
2026-06-21T03:31:34.7894772Z         "impl",
2026-06-21T03:31:34.7894866Z         "unit"
2026-06-21T03:31:34.7894963Z       ],
2026-06-21T03:31:34.7895072Z       "stages": {
2026-06-21T03:31:34.7895176Z         "doc": {
2026-06-21T03:31:34.7895297Z           "complete": false,
2026-06-21T03:31:34.7895410Z           "evidence": []
2026-06-21T03:31:34.7895505Z         },
2026-06-21T03:31:34.7895612Z         "impl": {
2026-06-21T03:31:34.7895729Z           "complete": true,
2026-06-21T03:31:34.7895834Z           "evidence": [
2026-06-21T03:31:34.7895941Z             {
2026-06-21T03:31:34.7896092Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7896202Z               "line": 385
2026-06-21T03:31:34.7896312Z             },
2026-06-21T03:31:34.7896415Z             {
2026-06-21T03:31:34.7896563Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7896676Z               "line": 202
2026-06-21T03:31:34.7896784Z             },
2026-06-21T03:31:34.7896885Z             {
2026-06-21T03:31:34.7897023Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7897127Z               "line": 234
2026-06-21T03:31:34.7897219Z             },
2026-06-21T03:31:34.7897328Z             {
2026-06-21T03:31:34.7897461Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7897562Z               "line": 274
2026-06-21T03:31:34.7897667Z             }
2026-06-21T03:31:34.7897771Z           ]
2026-06-21T03:31:34.7897877Z         },
2026-06-21T03:31:34.7897982Z         "int": {
2026-06-21T03:31:34.7898096Z           "complete": false,
2026-06-21T03:31:34.7898201Z           "evidence": []
2026-06-21T03:31:34.7898306Z         },
2026-06-21T03:31:34.7898405Z         "unit": {
2026-06-21T03:31:34.7898512Z           "complete": true,
2026-06-21T03:31:34.7898625Z           "evidence": [
2026-06-21T03:31:34.7898725Z             {
2026-06-21T03:31:34.7898878Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7899074Z               "line": 889
2026-06-21T03:31:34.7899184Z             },
2026-06-21T03:31:34.7899287Z             {
2026-06-21T03:31:34.7899440Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7899543Z               "line": 561
2026-06-21T03:31:34.7899637Z             },
2026-06-21T03:31:34.7899747Z             {
2026-06-21T03:31:34.7899877Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7899990Z               "line": 668
2026-06-21T03:31:34.7900091Z             },
2026-06-21T03:31:34.7900196Z             {
2026-06-21T03:31:34.7900338Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7900444Z               "line": 750
2026-06-21T03:31:34.7900549Z             }
2026-06-21T03:31:34.7900648Z           ]
2026-06-21T03:31:34.7900754Z         }
2026-06-21T03:31:34.7900858Z       }
2026-06-21T03:31:34.7900953Z     },
2026-06-21T03:31:34.7901055Z     {
2026-06-21T03:31:34.7901268Z       "id": "REQ-INST-5",
2026-06-21T03:31:34.7901473Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T03:31:34.7901583Z       "requiredStages": [
2026-06-21T03:31:34.7901684Z         "impl",
2026-06-21T03:31:34.7901793Z         "unit",
2026-06-21T03:31:34.7901892Z         "int"
2026-06-21T03:31:34.7901997Z       ],
2026-06-21T03:31:34.7902101Z       "stages": {
2026-06-21T03:31:34.7902208Z         "doc": {
2026-06-21T03:31:34.7902309Z           "complete": false,
2026-06-21T03:31:34.7902420Z           "evidence": []
2026-06-21T03:31:34.7902523Z         },
2026-06-21T03:31:34.7902624Z         "impl": {
2026-06-21T03:31:34.7902833Z           "complete": true,
2026-06-21T03:31:34.7902949Z           "evidence": [
2026-06-21T03:31:34.7903053Z             {
2026-06-21T03:31:34.7903200Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T03:31:34.7903311Z               "line": 85
2026-06-21T03:31:34.7903415Z             },
2026-06-21T03:31:34.7903525Z             {
2026-06-21T03:31:34.7903664Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7903773Z               "line": 68
2026-06-21T03:31:34.7903878Z             },
2026-06-21T03:31:34.7903984Z             {
2026-06-21T03:31:34.7904112Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7904227Z               "line": 99
2026-06-21T03:31:34.7904327Z             },
2026-06-21T03:31:34.7904431Z             {
2026-06-21T03:31:34.7904561Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7904674Z               "line": 183
2026-06-21T03:31:34.7904778Z             },
2026-06-21T03:31:34.7904883Z             {
2026-06-21T03:31:34.7905022Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7905121Z               "line": 314
2026-06-21T03:31:34.7905222Z             }
2026-06-21T03:31:34.7905327Z           ]
2026-06-21T03:31:34.7905436Z         },
2026-06-21T03:31:34.7905537Z         "int": {
2026-06-21T03:31:34.7905647Z           "complete": true,
2026-06-21T03:31:34.7905760Z           "evidence": [
2026-06-21T03:31:34.7905861Z             {
2026-06-21T03:31:34.7906017Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.7906123Z               "line": 156
2026-06-21T03:31:34.7906233Z             },
2026-06-21T03:31:34.7906332Z             {
2026-06-21T03:31:34.7906481Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:31:34.7906594Z               "line": 145
2026-06-21T03:31:34.7906695Z             },
2026-06-21T03:31:34.7906801Z             {
2026-06-21T03:31:34.7906942Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7907060Z               "line": 707
2026-06-21T03:31:34.7907166Z             },
2026-06-21T03:31:34.7907268Z             {
2026-06-21T03:31:34.7907416Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7907527Z               "line": 1069
2026-06-21T03:31:34.7907631Z             }
2026-06-21T03:31:34.7907736Z           ]
2026-06-21T03:31:34.7907841Z         },
2026-06-21T03:31:34.7907945Z         "unit": {
2026-06-21T03:31:34.7908065Z           "complete": true,
2026-06-21T03:31:34.7908170Z           "evidence": [
2026-06-21T03:31:34.7908274Z             {
2026-06-21T03:31:34.7908409Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7908518Z               "line": 552
2026-06-21T03:31:34.7908627Z             },
2026-06-21T03:31:34.7908733Z             {
2026-06-21T03:31:34.7908866Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.7909068Z               "line": 595
2026-06-21T03:31:34.7909166Z             },
2026-06-21T03:31:34.7909266Z             {
2026-06-21T03:31:34.7909424Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.7909567Z               "line": 219
2026-06-21T03:31:34.7909668Z             }
2026-06-21T03:31:34.7909772Z           ]
2026-06-21T03:31:34.7909880Z         }
2026-06-21T03:31:34.7909985Z       }
2026-06-21T03:31:34.7910188Z     },
2026-06-21T03:31:34.7910288Z     {
2026-06-21T03:31:34.7910408Z       "id": "REQ-INST-6",
2026-06-21T03:31:34.7910608Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T03:31:34.7910723Z       "requiredStages": [
2026-06-21T03:31:34.7910827Z         "impl",
2026-06-21T03:31:34.7910927Z         "unit",
2026-06-21T03:31:34.7911037Z         "int"
2026-06-21T03:31:34.7911141Z       ],
2026-06-21T03:31:34.7911247Z       "stages": {
2026-06-21T03:31:34.7911347Z         "doc": {
2026-06-21T03:31:34.7911461Z           "complete": true,
2026-06-21T03:31:34.7911576Z           "evidence": [
2026-06-21T03:31:34.7911771Z             {
2026-06-21T03:31:34.7911901Z               "path": "docs/DEFERRED.md",
2026-06-21T03:31:34.7912005Z               "line": 13
2026-06-21T03:31:34.7912105Z             }
2026-06-21T03:31:34.7912216Z           ]
2026-06-21T03:31:34.7912320Z         },
2026-06-21T03:31:34.7912423Z         "impl": {
2026-06-21T03:31:34.7912533Z           "complete": true,
2026-06-21T03:31:34.7912651Z           "evidence": [
2026-06-21T03:31:34.7912754Z             {
2026-06-21T03:31:34.7912903Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.7913022Z               "line": 391
2026-06-21T03:31:34.7913126Z             },
2026-06-21T03:31:34.7913232Z             {
2026-06-21T03:31:34.7913370Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:31:34.7913470Z               "line": 27
2026-06-21T03:31:34.7913571Z             },
2026-06-21T03:31:34.7913680Z             {
2026-06-21T03:31:34.7913829Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:31:34.7913942Z               "line": 73
2026-06-21T03:31:34.7914047Z             },
2026-06-21T03:31:34.7914153Z             {
2026-06-21T03:31:34.7914305Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:31:34.7914414Z               "line": 182
2026-06-21T03:31:34.7914515Z             },
2026-06-21T03:31:34.7914623Z             {
2026-06-21T03:31:34.7914768Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7914877Z               "line": 426
2026-06-21T03:31:34.7914982Z             },
2026-06-21T03:31:34.7915083Z             {
2026-06-21T03:31:34.7915225Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T03:31:34.7915333Z               "line": 31
2026-06-21T03:31:34.7915443Z             },
2026-06-21T03:31:34.7915545Z             {
2026-06-21T03:31:34.7915696Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.7915807Z               "line": 202
2026-06-21T03:31:34.7915906Z             },
2026-06-21T03:31:34.7916015Z             {
2026-06-21T03:31:34.7916145Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7916258Z               "line": 83
2026-06-21T03:31:34.7916363Z             },
2026-06-21T03:31:34.7916469Z             {
2026-06-21T03:31:34.7916596Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7916717Z               "line": 1849
2026-06-21T03:31:34.7916821Z             },
2026-06-21T03:31:34.7916921Z             {
2026-06-21T03:31:34.7917051Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7917164Z               "line": 179
2026-06-21T03:31:34.7917269Z             },
2026-06-21T03:31:34.7917376Z             {
2026-06-21T03:31:34.7917507Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7917616Z               "line": 215
2026-06-21T03:31:34.7917721Z             }
2026-06-21T03:31:34.7917829Z           ]
2026-06-21T03:31:34.7917933Z         },
2026-06-21T03:31:34.7918039Z         "int": {
2026-06-21T03:31:34.7918144Z           "complete": true,
2026-06-21T03:31:34.7918252Z           "evidence": [
2026-06-21T03:31:34.7918354Z             {
2026-06-21T03:31:34.7918496Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7918606Z               "line": 721
2026-06-21T03:31:34.7918702Z             },
2026-06-21T03:31:34.7918887Z             {
2026-06-21T03:31:34.7919112Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7919216Z               "line": 1114
2026-06-21T03:31:34.7919322Z             },
2026-06-21T03:31:34.7919436Z             {
2026-06-21T03:31:34.7919570Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.7919674Z               "line": 726
2026-06-21T03:31:34.7919784Z             }
2026-06-21T03:31:34.7919880Z           ]
2026-06-21T03:31:34.7919985Z         },
2026-06-21T03:31:34.7920089Z         "unit": {
2026-06-21T03:31:34.7920195Z           "complete": true,
2026-06-21T03:31:34.7920309Z           "evidence": [
2026-06-21T03:31:34.7920517Z             {
2026-06-21T03:31:34.7920672Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.7920777Z               "line": 661
2026-06-21T03:31:34.7920882Z             },
2026-06-21T03:31:34.7920978Z             {
2026-06-21T03:31:34.7921129Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.7921235Z               "line": 899
2026-06-21T03:31:34.7921330Z             },
2026-06-21T03:31:34.7921430Z             {
2026-06-21T03:31:34.7921569Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T03:31:34.7921678Z               "line": 66
2026-06-21T03:31:34.7921778Z             },
2026-06-21T03:31:34.7921879Z             {
2026-06-21T03:31:34.7922021Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.7922127Z               "line": 297
2026-06-21T03:31:34.7922236Z             },
2026-06-21T03:31:34.7922336Z             {
2026-06-21T03:31:34.7922480Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.7922598Z               "line": 203
2026-06-21T03:31:34.7922699Z             }
2026-06-21T03:31:34.7922805Z           ]
2026-06-21T03:31:34.7922904Z         }
2026-06-21T03:31:34.7923007Z       }
2026-06-21T03:31:34.7923112Z     },
2026-06-21T03:31:34.7923216Z     {
2026-06-21T03:31:34.7923320Z       "id": "REQ-INST-7",
2026-06-21T03:31:34.7923492Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T03:31:34.7923611Z       "requiredStages": [
2026-06-21T03:31:34.7923720Z         "impl",
2026-06-21T03:31:34.7923826Z         "unit",
2026-06-21T03:31:34.7923935Z         "int"
2026-06-21T03:31:34.7924040Z       ],
2026-06-21T03:31:34.7924145Z       "stages": {
2026-06-21T03:31:34.7924245Z         "doc": {
2026-06-21T03:31:34.7924350Z           "complete": false,
2026-06-21T03:31:34.7924460Z           "evidence": []
2026-06-21T03:31:34.7924569Z         },
2026-06-21T03:31:34.7924679Z         "impl": {
2026-06-21T03:31:34.7924789Z           "complete": true,
2026-06-21T03:31:34.7924898Z           "evidence": [
2026-06-21T03:31:34.7925003Z             {
2026-06-21T03:31:34.7925151Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.7925260Z               "line": 436
2026-06-21T03:31:34.7925362Z             },
2026-06-21T03:31:34.7925465Z             {
2026-06-21T03:31:34.7925614Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7925729Z               "line": 27
2026-06-21T03:31:34.7925822Z             },
2026-06-21T03:31:34.7925931Z             {
2026-06-21T03:31:34.7926080Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7926189Z               "line": 207
2026-06-21T03:31:34.7926294Z             },
2026-06-21T03:31:34.7926400Z             {
2026-06-21T03:31:34.7926546Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7926652Z               "line": 344
2026-06-21T03:31:34.7926762Z             },
2026-06-21T03:31:34.7926861Z             {
2026-06-21T03:31:34.7927010Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T03:31:34.7927124Z               "line": 59
2026-06-21T03:31:34.7927233Z             },
2026-06-21T03:31:34.7927344Z             {
2026-06-21T03:31:34.7927490Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7927606Z               "line": 41
2026-06-21T03:31:34.7927805Z             },
2026-06-21T03:31:34.7927907Z             {
2026-06-21T03:31:34.7928058Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7928176Z               "line": 27
2026-06-21T03:31:34.7928286Z             },
2026-06-21T03:31:34.7928389Z             {
2026-06-21T03:31:34.7928537Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7928647Z               "line": 119
2026-06-21T03:31:34.7928755Z             },
2026-06-21T03:31:34.7928851Z             {
2026-06-21T03:31:34.7929089Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7929304Z               "line": 134
2026-06-21T03:31:34.7929442Z             },
2026-06-21T03:31:34.7929548Z             {
2026-06-21T03:31:34.7929686Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:31:34.7929805Z               "line": 139
2026-06-21T03:31:34.7929901Z             }
2026-06-21T03:31:34.7930006Z           ]
2026-06-21T03:31:34.7930120Z         },
2026-06-21T03:31:34.7930226Z         "int": {
2026-06-21T03:31:34.7930348Z           "complete": true,
2026-06-21T03:31:34.7930459Z           "evidence": [
2026-06-21T03:31:34.7930568Z             {
2026-06-21T03:31:34.7930706Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:31:34.7930812Z               "line": 145
2026-06-21T03:31:34.7930920Z             },
2026-06-21T03:31:34.7931020Z             {
2026-06-21T03:31:34.7931173Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7931275Z               "line": 665
2026-06-21T03:31:34.7931374Z             },
2026-06-21T03:31:34.7931476Z             {
2026-06-21T03:31:34.7931618Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7931757Z               "line": 964
2026-06-21T03:31:34.7931852Z             }
2026-06-21T03:31:34.7931980Z           ]
2026-06-21T03:31:34.7932087Z         },
2026-06-21T03:31:34.7932196Z         "unit": {
2026-06-21T03:31:34.7932309Z           "complete": true,
2026-06-21T03:31:34.7932425Z           "evidence": [
2026-06-21T03:31:34.7932529Z             {
2026-06-21T03:31:34.7932682Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7932796Z               "line": 1134
2026-06-21T03:31:34.7932901Z             },
2026-06-21T03:31:34.7933002Z             {
2026-06-21T03:31:34.7933153Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.7933264Z               "line": 1521
2026-06-21T03:31:34.7933375Z             },
2026-06-21T03:31:34.7933478Z             {
2026-06-21T03:31:34.7933629Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T03:31:34.7933729Z               "line": 84
2026-06-21T03:31:34.7933837Z             },
2026-06-21T03:31:34.7933946Z             {
2026-06-21T03:31:34.7934091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7934204Z               "line": 812
2026-06-21T03:31:34.7934309Z             },
2026-06-21T03:31:34.7934419Z             {
2026-06-21T03:31:34.7934561Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7934667Z               "line": 823
2026-06-21T03:31:34.7934772Z             },
2026-06-21T03:31:34.7934871Z             {
2026-06-21T03:31:34.7935006Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7935115Z               "line": 838
2026-06-21T03:31:34.7935215Z             },
2026-06-21T03:31:34.7935321Z             {
2026-06-21T03:31:34.7935468Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7935573Z               "line": 166
2026-06-21T03:31:34.7935673Z             },
2026-06-21T03:31:34.7935783Z             {
2026-06-21T03:31:34.7935927Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7936044Z               "line": 181
2026-06-21T03:31:34.7936140Z             },
2026-06-21T03:31:34.7936242Z             {
2026-06-21T03:31:34.7936382Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.7936602Z               "line": 214
2026-06-21T03:31:34.7936711Z             }
2026-06-21T03:31:34.7936811Z           ]
2026-06-21T03:31:34.7936917Z         }
2026-06-21T03:31:34.7937022Z       }
2026-06-21T03:31:34.7937121Z     },
2026-06-21T03:31:34.7937217Z     {
2026-06-21T03:31:34.7937332Z       "id": "REQ-INST-8",
2026-06-21T03:31:34.7937513Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T03:31:34.7937618Z       "requiredStages": [
2026-06-21T03:31:34.7937727Z         "impl",
2026-06-21T03:31:34.7937833Z         "unit",
2026-06-21T03:31:34.7937937Z         "int"
2026-06-21T03:31:34.7938109Z       ],
2026-06-21T03:31:34.7938209Z       "stages": {
2026-06-21T03:31:34.7938322Z         "doc": {
2026-06-21T03:31:34.7938433Z           "complete": false,
2026-06-21T03:31:34.7938548Z           "evidence": []
2026-06-21T03:31:34.7938651Z         },
2026-06-21T03:31:34.7938760Z         "impl": {
2026-06-21T03:31:34.7938870Z           "complete": true,
2026-06-21T03:31:34.7939068Z           "evidence": [
2026-06-21T03:31:34.7939169Z             {
2026-06-21T03:31:34.7939315Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7939445Z               "line": 104
2026-06-21T03:31:34.7939545Z             },
2026-06-21T03:31:34.7939649Z             {
2026-06-21T03:31:34.7939799Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7939908Z               "line": 330
2026-06-21T03:31:34.7940022Z             },
2026-06-21T03:31:34.7940113Z             {
2026-06-21T03:31:34.7940260Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.7940370Z               "line": 370
2026-06-21T03:31:34.7940480Z             },
2026-06-21T03:31:34.7940585Z             {
2026-06-21T03:31:34.7940719Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.7940832Z               "line": 62
2026-06-21T03:31:34.7943480Z             }
2026-06-21T03:31:34.7943634Z           ]
2026-06-21T03:31:34.7943737Z         },
2026-06-21T03:31:34.7943843Z         "int": {
2026-06-21T03:31:34.7943968Z           "complete": true,
2026-06-21T03:31:34.7944076Z           "evidence": [
2026-06-21T03:31:34.7944184Z             {
2026-06-21T03:31:34.7944350Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.7944464Z               "line": 415
2026-06-21T03:31:34.7944554Z             },
2026-06-21T03:31:34.7944661Z             {
2026-06-21T03:31:34.7944816Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.7944922Z               "line": 1028
2026-06-21T03:31:34.7945027Z             }
2026-06-21T03:31:34.7945136Z           ]
2026-06-21T03:31:34.7945242Z         },
2026-06-21T03:31:34.7945351Z         "unit": {
2026-06-21T03:31:34.7945455Z           "complete": true,
2026-06-21T03:31:34.7945566Z           "evidence": [
2026-06-21T03:31:34.7945666Z             {
2026-06-21T03:31:34.7945814Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7945923Z               "line": 366
2026-06-21T03:31:34.7946028Z             },
2026-06-21T03:31:34.7946129Z             {
2026-06-21T03:31:34.7946280Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.7946390Z               "line": 633
2026-06-21T03:31:34.7946492Z             },
2026-06-21T03:31:34.7946585Z             {
2026-06-21T03:31:34.7946724Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.7946830Z               "line": 116
2026-06-21T03:31:34.7946938Z             },
2026-06-21T03:31:34.7947042Z             {
2026-06-21T03:31:34.7947186Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.7947291Z               "line": 160
2026-06-21T03:31:34.7947400Z             }
2026-06-21T03:31:34.7947501Z           ]
2026-06-21T03:31:34.7947605Z         }
2026-06-21T03:31:34.7947710Z       }
2026-06-21T03:31:34.7947811Z     },
2026-06-21T03:31:34.7947915Z     {
2026-06-21T03:31:34.7948020Z       "id": "REQ-INST-9",
2026-06-21T03:31:34.7948373Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T03:31:34.7948488Z       "requiredStages": [
2026-06-21T03:31:34.7948592Z         "impl",
2026-06-21T03:31:34.7948698Z         "unit"
2026-06-21T03:31:34.7948798Z       ],
2026-06-21T03:31:34.7948902Z       "stages": {
2026-06-21T03:31:34.7949098Z         "doc": {
2026-06-21T03:31:34.7949221Z           "complete": false,
2026-06-21T03:31:34.7949320Z           "evidence": []
2026-06-21T03:31:34.7949435Z         },
2026-06-21T03:31:34.7949542Z         "impl": {
2026-06-21T03:31:34.7949652Z           "complete": true,
2026-06-21T03:31:34.7949867Z           "evidence": [
2026-06-21T03:31:34.7949971Z             {
2026-06-21T03:31:34.7950134Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7950238Z               "line": 449
2026-06-21T03:31:34.7950344Z             }
2026-06-21T03:31:34.7950434Z           ]
2026-06-21T03:31:34.7950538Z         },
2026-06-21T03:31:34.7950649Z         "int": {
2026-06-21T03:31:34.7950758Z           "complete": false,
2026-06-21T03:31:34.7950872Z           "evidence": []
2026-06-21T03:31:34.7950969Z         },
2026-06-21T03:31:34.7951064Z         "unit": {
2026-06-21T03:31:34.7951168Z           "complete": true,
2026-06-21T03:31:34.7951275Z           "evidence": [
2026-06-21T03:31:34.7951383Z             {
2026-06-21T03:31:34.7951531Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7951641Z               "line": 1397
2026-06-21T03:31:34.7951745Z             },
2026-06-21T03:31:34.7951851Z             {
2026-06-21T03:31:34.7952008Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7952121Z               "line": 1406
2026-06-21T03:31:34.7952221Z             },
2026-06-21T03:31:34.7952321Z             {
2026-06-21T03:31:34.7952471Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7952576Z               "line": 1422
2026-06-21T03:31:34.7952692Z             },
2026-06-21T03:31:34.7952800Z             {
2026-06-21T03:31:34.7952949Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7953053Z               "line": 1434
2026-06-21T03:31:34.7953153Z             },
2026-06-21T03:31:34.7953264Z             {
2026-06-21T03:31:34.7953405Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.7953516Z               "line": 1454
2026-06-21T03:31:34.7953621Z             }
2026-06-21T03:31:34.7953720Z           ]
2026-06-21T03:31:34.7953827Z         }
2026-06-21T03:31:34.7953917Z       }
2026-06-21T03:31:34.7954012Z     },
2026-06-21T03:31:34.7954112Z     {
2026-06-21T03:31:34.7954237Z       "id": "REQ-INSTALL-1",
2026-06-21T03:31:34.7954461Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T03:31:34.7954579Z       "requiredStages": [
2026-06-21T03:31:34.7954688Z         "doc",
2026-06-21T03:31:34.7954797Z         "impl",
2026-06-21T03:31:34.7954906Z         "int"
2026-06-21T03:31:34.7955009Z       ],
2026-06-21T03:31:34.7955114Z       "stages": {
2026-06-21T03:31:34.7955221Z         "doc": {
2026-06-21T03:31:34.7955329Z           "complete": true,
2026-06-21T03:31:34.7955439Z           "evidence": [
2026-06-21T03:31:34.7955544Z             {
2026-06-21T03:31:34.7955663Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7955769Z               "line": 754
2026-06-21T03:31:34.7955873Z             }
2026-06-21T03:31:34.7955982Z           ]
2026-06-21T03:31:34.7956088Z         },
2026-06-21T03:31:34.7956192Z         "impl": {
2026-06-21T03:31:34.7956302Z           "complete": true,
2026-06-21T03:31:34.7956413Z           "evidence": [
2026-06-21T03:31:34.7956516Z             {
2026-06-21T03:31:34.7956655Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.7956770Z               "line": 57
2026-06-21T03:31:34.7956874Z             },
2026-06-21T03:31:34.7956979Z             {
2026-06-21T03:31:34.7957104Z               "path": "installer/install.sh",
2026-06-21T03:31:34.7957324Z               "line": 52
2026-06-21T03:31:34.7957414Z             }
2026-06-21T03:31:34.7957522Z           ]
2026-06-21T03:31:34.7957626Z         },
2026-06-21T03:31:34.7957718Z         "int": {
2026-06-21T03:31:34.7957827Z           "complete": true,
2026-06-21T03:31:34.7957926Z           "evidence": [
2026-06-21T03:31:34.7958032Z             {
2026-06-21T03:31:34.7958184Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:31:34.7958285Z               "line": 21
2026-06-21T03:31:34.7958385Z             }
2026-06-21T03:31:34.7958489Z           ]
2026-06-21T03:31:34.7958600Z         },
2026-06-21T03:31:34.7958776Z         "unit": {
2026-06-21T03:31:34.7958894Z           "complete": false,
2026-06-21T03:31:34.7959076Z           "evidence": []
2026-06-21T03:31:34.7959186Z         }
2026-06-21T03:31:34.7959292Z       }
2026-06-21T03:31:34.7959391Z     },
2026-06-21T03:31:34.7959496Z     {
2026-06-21T03:31:34.7959607Z       "id": "REQ-INSTALL-10",
2026-06-21T03:31:34.7961032Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T03:31:34.7961152Z       "requiredStages": [
2026-06-21T03:31:34.7961252Z         "impl",
2026-06-21T03:31:34.7961357Z         "unit"
2026-06-21T03:31:34.7961462Z       ],
2026-06-21T03:31:34.7961567Z       "stages": {
2026-06-21T03:31:34.7961676Z         "doc": {
2026-06-21T03:31:34.7961791Z           "complete": false,
2026-06-21T03:31:34.7961901Z           "evidence": []
2026-06-21T03:31:34.7962005Z         },
2026-06-21T03:31:34.7962111Z         "impl": {
2026-06-21T03:31:34.7962216Z           "complete": true,
2026-06-21T03:31:34.7962324Z           "evidence": [
2026-06-21T03:31:34.7962435Z             {
2026-06-21T03:31:34.7962568Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.7962676Z               "line": 191
2026-06-21T03:31:34.7962772Z             }
2026-06-21T03:31:34.7962876Z           ]
2026-06-21T03:31:34.7962979Z         },
2026-06-21T03:31:34.7963079Z         "int": {
2026-06-21T03:31:34.7963195Z           "complete": false,
2026-06-21T03:31:34.7963299Z           "evidence": []
2026-06-21T03:31:34.7963408Z         },
2026-06-21T03:31:34.7963514Z         "unit": {
2026-06-21T03:31:34.7963628Z           "complete": true,
2026-06-21T03:31:34.7963733Z           "evidence": [
2026-06-21T03:31:34.7963838Z             {
2026-06-21T03:31:34.7963994Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:31:34.7964100Z               "line": 211
2026-06-21T03:31:34.7964204Z             }
2026-06-21T03:31:34.7964309Z           ]
2026-06-21T03:31:34.7964415Z         }
2026-06-21T03:31:34.7964515Z       }
2026-06-21T03:31:34.7964610Z     },
2026-06-21T03:31:34.7964702Z     {
2026-06-21T03:31:34.7964816Z       "id": "REQ-INSTALL-11",
2026-06-21T03:31:34.7966653Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T03:31:34.7966786Z       "requiredStages": [
2026-06-21T03:31:34.7966886Z         "doc",
2026-06-21T03:31:34.7966992Z         "impl",
2026-06-21T03:31:34.7967091Z         "unit"
2026-06-21T03:31:34.7967196Z       ],
2026-06-21T03:31:34.7967302Z       "stages": {
2026-06-21T03:31:34.7967535Z         "doc": {
2026-06-21T03:31:34.7967650Z           "complete": true,
2026-06-21T03:31:34.7967763Z           "evidence": [
2026-06-21T03:31:34.7967864Z             {
2026-06-21T03:31:34.7967989Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7968101Z               "line": 138
2026-06-21T03:31:34.7968196Z             },
2026-06-21T03:31:34.7968306Z             {
2026-06-21T03:31:34.7968429Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.7968535Z               "line": 82
2026-06-21T03:31:34.7968635Z             }
2026-06-21T03:31:34.7968739Z           ]
2026-06-21T03:31:34.7968850Z         },
2026-06-21T03:31:34.7969140Z         "impl": {
2026-06-21T03:31:34.7969255Z           "complete": true,
2026-06-21T03:31:34.7969360Z           "evidence": [
2026-06-21T03:31:34.7969494Z             {
2026-06-21T03:31:34.7969636Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.7969751Z               "line": 223
2026-06-21T03:31:34.7969847Z             },
2026-06-21T03:31:34.7969951Z             {
2026-06-21T03:31:34.7970103Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7970200Z               "line": 99
2026-06-21T03:31:34.7970303Z             },
2026-06-21T03:31:34.7970412Z             {
2026-06-21T03:31:34.7970555Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.7970668Z               "line": 117
2026-06-21T03:31:34.7970768Z             },
2026-06-21T03:31:34.7970869Z             {
2026-06-21T03:31:34.7971006Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:31:34.7971116Z               "line": 332
2026-06-21T03:31:34.7971231Z             },
2026-06-21T03:31:34.7971330Z             {
2026-06-21T03:31:34.7971474Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.7971578Z               "line": 88
2026-06-21T03:31:34.7971687Z             },
2026-06-21T03:31:34.7971789Z             {
2026-06-21T03:31:34.7971926Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.7972041Z               "line": 104
2026-06-21T03:31:34.7972141Z             },
2026-06-21T03:31:34.7972250Z             {
2026-06-21T03:31:34.7972395Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7972503Z               "line": 297
2026-06-21T03:31:34.7972608Z             },
2026-06-21T03:31:34.7972705Z             {
2026-06-21T03:31:34.7972846Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7972951Z               "line": 332
2026-06-21T03:31:34.7973058Z             },
2026-06-21T03:31:34.7973152Z             {
2026-06-21T03:31:34.7973303Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7973413Z               "line": 523
2026-06-21T03:31:34.7973521Z             },
2026-06-21T03:31:34.7973625Z             {
2026-06-21T03:31:34.7973769Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7973882Z               "line": 546
2026-06-21T03:31:34.7973973Z             },
2026-06-21T03:31:34.7974084Z             {
2026-06-21T03:31:34.7974225Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7974336Z               "line": 561
2026-06-21T03:31:34.7974441Z             },
2026-06-21T03:31:34.7974545Z             {
2026-06-21T03:31:34.7974675Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.7974779Z               "line": 492
2026-06-21T03:31:34.7974884Z             }
2026-06-21T03:31:34.7974985Z           ]
2026-06-21T03:31:34.7975094Z         },
2026-06-21T03:31:34.7975199Z         "int": {
2026-06-21T03:31:34.7975309Z           "complete": false,
2026-06-21T03:31:34.7975432Z           "evidence": []
2026-06-21T03:31:34.7975518Z         },
2026-06-21T03:31:34.7975629Z         "unit": {
2026-06-21T03:31:34.7975737Z           "complete": true,
2026-06-21T03:31:34.7975846Z           "evidence": [
2026-06-21T03:31:34.7975951Z             {
2026-06-21T03:31:34.7976087Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7976298Z               "line": 799
2026-06-21T03:31:34.7976397Z             },
2026-06-21T03:31:34.7976502Z             {
2026-06-21T03:31:34.7976650Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7976763Z               "line": 811
2026-06-21T03:31:34.7976870Z             },
2026-06-21T03:31:34.7976970Z             {
2026-06-21T03:31:34.7977116Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.7977223Z               "line": 820
2026-06-21T03:31:34.7977326Z             }
2026-06-21T03:31:34.7977427Z           ]
2026-06-21T03:31:34.7977523Z         }
2026-06-21T03:31:34.7977713Z       }
2026-06-21T03:31:34.7977809Z     },
2026-06-21T03:31:34.7977914Z     {
2026-06-21T03:31:34.7978033Z       "id": "REQ-INSTALL-12",
2026-06-21T03:31:34.7980779Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T03:31:34.7980930Z       "requiredStages": [
2026-06-21T03:31:34.7981029Z         "doc",
2026-06-21T03:31:34.7981143Z         "impl",
2026-06-21T03:31:34.7981247Z         "unit",
2026-06-21T03:31:34.7981351Z         "int"
2026-06-21T03:31:34.7981453Z       ],
2026-06-21T03:31:34.7981561Z       "stages": {
2026-06-21T03:31:34.7981671Z         "doc": {
2026-06-21T03:31:34.7981781Z           "complete": true,
2026-06-21T03:31:34.7981890Z           "evidence": [
2026-06-21T03:31:34.7981996Z             {
2026-06-21T03:31:34.7982115Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7982229Z               "line": 185
2026-06-21T03:31:34.7982325Z             }
2026-06-21T03:31:34.7982430Z           ]
2026-06-21T03:31:34.7982534Z         },
2026-06-21T03:31:34.7982640Z         "impl": {
2026-06-21T03:31:34.7982758Z           "complete": true,
2026-06-21T03:31:34.7982858Z           "evidence": [
2026-06-21T03:31:34.7982965Z             {
2026-06-21T03:31:34.7983121Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7983226Z               "line": 27
2026-06-21T03:31:34.7983331Z             },
2026-06-21T03:31:34.7983440Z             {
2026-06-21T03:31:34.7983589Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7983698Z               "line": 223
2026-06-21T03:31:34.7983806Z             },
2026-06-21T03:31:34.7983911Z             {
2026-06-21T03:31:34.7984033Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7984137Z               "line": 5677
2026-06-21T03:31:34.7984243Z             }
2026-06-21T03:31:34.7984348Z           ]
2026-06-21T03:31:34.7984452Z         },
2026-06-21T03:31:34.7984553Z         "int": {
2026-06-21T03:31:34.7984663Z           "complete": true,
2026-06-21T03:31:34.7984776Z           "evidence": [
2026-06-21T03:31:34.7984878Z             {
2026-06-21T03:31:34.7985025Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:31:34.7985139Z               "line": 19
2026-06-21T03:31:34.7985244Z             }
2026-06-21T03:31:34.7985349Z           ]
2026-06-21T03:31:34.7985449Z         },
2026-06-21T03:31:34.7985550Z         "unit": {
2026-06-21T03:31:34.7985659Z           "complete": true,
2026-06-21T03:31:34.7985763Z           "evidence": [
2026-06-21T03:31:34.7985964Z             {
2026-06-21T03:31:34.7986113Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7986222Z               "line": 395
2026-06-21T03:31:34.7986321Z             },
2026-06-21T03:31:34.7986416Z             {
2026-06-21T03:31:34.7986568Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7986685Z               "line": 421
2026-06-21T03:31:34.7986790Z             },
2026-06-21T03:31:34.7986891Z             {
2026-06-21T03:31:34.7987038Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7987134Z               "line": 440
2026-06-21T03:31:34.7987239Z             },
2026-06-21T03:31:34.7987440Z             {
2026-06-21T03:31:34.7987587Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.7987701Z               "line": 475
2026-06-21T03:31:34.7987802Z             },
2026-06-21T03:31:34.7987906Z             {
2026-06-21T03:31:34.7988030Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.7988150Z               "line": 8665
2026-06-21T03:31:34.7988269Z             }
2026-06-21T03:31:34.7988374Z           ]
2026-06-21T03:31:34.7988479Z         }
2026-06-21T03:31:34.7988579Z       }
2026-06-21T03:31:34.7988679Z     },
2026-06-21T03:31:34.7988780Z     {
2026-06-21T03:31:34.7988908Z       "id": "REQ-INSTALL-2",
2026-06-21T03:31:34.7989146Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T03:31:34.7989254Z       "requiredStages": [
2026-06-21T03:31:34.7989360Z         "doc"
2026-06-21T03:31:34.7989466Z       ],
2026-06-21T03:31:34.7989573Z       "stages": {
2026-06-21T03:31:34.7989665Z         "doc": {
2026-06-21T03:31:34.7989789Z           "complete": true,
2026-06-21T03:31:34.7989898Z           "evidence": [
2026-06-21T03:31:34.7989999Z             {
2026-06-21T03:31:34.7990108Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.7990212Z               "line": 755
2026-06-21T03:31:34.7990323Z             }
2026-06-21T03:31:34.7990423Z           ]
2026-06-21T03:31:34.7990532Z         },
2026-06-21T03:31:34.7990638Z         "impl": {
2026-06-21T03:31:34.7990756Z           "complete": false,
2026-06-21T03:31:34.7990861Z           "evidence": []
2026-06-21T03:31:34.7990962Z         },
2026-06-21T03:31:34.7991066Z         "int": {
2026-06-21T03:31:34.7991185Z           "complete": false,
2026-06-21T03:31:34.7991301Z           "evidence": []
2026-06-21T03:31:34.7991400Z         },
2026-06-21T03:31:34.7991495Z         "unit": {
2026-06-21T03:31:34.7991599Z           "complete": false,
2026-06-21T03:31:34.7991713Z           "evidence": []
2026-06-21T03:31:34.7991821Z         }
2026-06-21T03:31:34.7991921Z       }
2026-06-21T03:31:34.7992032Z     },
2026-06-21T03:31:34.7992131Z     {
2026-06-21T03:31:34.7992236Z       "id": "REQ-INSTALL-3",
2026-06-21T03:31:34.7992412Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T03:31:34.7992517Z       "requiredStages": [
2026-06-21T03:31:34.7992618Z         "impl",
2026-06-21T03:31:34.7992718Z         "int"
2026-06-21T03:31:34.7992827Z       ],
2026-06-21T03:31:34.7992924Z       "stages": {
2026-06-21T03:31:34.7993033Z         "doc": {
2026-06-21T03:31:34.7993156Z           "complete": false,
2026-06-21T03:31:34.7993267Z           "evidence": []
2026-06-21T03:31:34.7993375Z         },
2026-06-21T03:31:34.7993476Z         "impl": {
2026-06-21T03:31:34.7993591Z           "complete": true,
2026-06-21T03:31:34.7993695Z           "evidence": [
2026-06-21T03:31:34.7993801Z             {
2026-06-21T03:31:34.7993938Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.7994043Z               "line": 100
2026-06-21T03:31:34.7994144Z             },
2026-06-21T03:31:34.7994248Z             {
2026-06-21T03:31:34.7994371Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.7994466Z               "line": 111
2026-06-21T03:31:34.7994575Z             },
2026-06-21T03:31:34.7994679Z             {
2026-06-21T03:31:34.7994808Z               "path": "installer/install.sh",
2026-06-21T03:31:34.7994918Z               "line": 79
2026-06-21T03:31:34.7995123Z             }
2026-06-21T03:31:34.7995237Z           ]
2026-06-21T03:31:34.7995341Z         },
2026-06-21T03:31:34.7995443Z         "int": {
2026-06-21T03:31:34.7995562Z           "complete": true,
2026-06-21T03:31:34.7995675Z           "evidence": [
2026-06-21T03:31:34.7995781Z             {
2026-06-21T03:31:34.7995933Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:31:34.7996048Z               "line": 167
2026-06-21T03:31:34.7996153Z             }
2026-06-21T03:31:34.7996262Z           ]
2026-06-21T03:31:34.7996363Z         },
2026-06-21T03:31:34.7996468Z         "unit": {
2026-06-21T03:31:34.7996668Z           "complete": false,
2026-06-21T03:31:34.7996782Z           "evidence": []
2026-06-21T03:31:34.7996886Z         }
2026-06-21T03:31:34.7996990Z       }
2026-06-21T03:31:34.7997085Z     },
2026-06-21T03:31:34.7997193Z     {
2026-06-21T03:31:34.7997302Z       "id": "REQ-INSTALL-4",
2026-06-21T03:31:34.7997975Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T03:31:34.7998090Z       "requiredStages": [
2026-06-21T03:31:34.7998199Z         "impl",
2026-06-21T03:31:34.7998305Z         "unit"
2026-06-21T03:31:34.7998405Z       ],
2026-06-21T03:31:34.7998509Z       "stages": {
2026-06-21T03:31:34.7998609Z         "doc": {
2026-06-21T03:31:34.7998724Z           "complete": false,
2026-06-21T03:31:34.7998829Z           "evidence": []
2026-06-21T03:31:34.7998934Z         },
2026-06-21T03:31:34.7999129Z         "impl": {
2026-06-21T03:31:34.7999249Z           "complete": true,
2026-06-21T03:31:34.7999354Z           "evidence": [
2026-06-21T03:31:34.7999448Z             {
2026-06-21T03:31:34.7999612Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.7999725Z               "line": 165
2026-06-21T03:31:34.7999833Z             },
2026-06-21T03:31:34.7999934Z             {
2026-06-21T03:31:34.8000077Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8000196Z               "line": 29
2026-06-21T03:31:34.8000302Z             },
2026-06-21T03:31:34.8000406Z             {
2026-06-21T03:31:34.8000555Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8000659Z               "line": 288
2026-06-21T03:31:34.8000772Z             },
2026-06-21T03:31:34.8000864Z             {
2026-06-21T03:31:34.8001011Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8001116Z               "line": 356
2026-06-21T03:31:34.8001217Z             },
2026-06-21T03:31:34.8001321Z             {
2026-06-21T03:31:34.8001465Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8001580Z               "line": 386
2026-06-21T03:31:34.8001683Z             },
2026-06-21T03:31:34.8001789Z             {
2026-06-21T03:31:34.8001933Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8002040Z               "line": 434
2026-06-21T03:31:34.8002141Z             },
2026-06-21T03:31:34.8002245Z             {
2026-06-21T03:31:34.8002377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8002486Z               "line": 5396
2026-06-21T03:31:34.8002597Z             }
2026-06-21T03:31:34.8002696Z           ]
2026-06-21T03:31:34.8002806Z         },
2026-06-21T03:31:34.8002911Z         "int": {
2026-06-21T03:31:34.8003025Z           "complete": false,
2026-06-21T03:31:34.8003136Z           "evidence": []
2026-06-21T03:31:34.8003235Z         },
2026-06-21T03:31:34.8003344Z         "unit": {
2026-06-21T03:31:34.8003460Z           "complete": true,
2026-06-21T03:31:34.8003569Z           "evidence": [
2026-06-21T03:31:34.8003668Z             {
2026-06-21T03:31:34.8003836Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.8003950Z               "line": 375
2026-06-21T03:31:34.8004170Z             },
2026-06-21T03:31:34.8004279Z             {
2026-06-21T03:31:34.8004428Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8004531Z               "line": 808
2026-06-21T03:31:34.8004637Z             },
2026-06-21T03:31:34.8004743Z             {
2026-06-21T03:31:34.8004884Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8004993Z               "line": 849
2026-06-21T03:31:34.8005098Z             },
2026-06-21T03:31:34.8005196Z             {
2026-06-21T03:31:34.8005349Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8005459Z               "line": 869
2026-06-21T03:31:34.8005659Z             },
2026-06-21T03:31:34.8005768Z             {
2026-06-21T03:31:34.8005892Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8006012Z               "line": 8403
2026-06-21T03:31:34.8006107Z             }
2026-06-21T03:31:34.8006211Z           ]
2026-06-21T03:31:34.8006322Z         }
2026-06-21T03:31:34.8006431Z       }
2026-06-21T03:31:34.8006536Z     },
2026-06-21T03:31:34.8006637Z     {
2026-06-21T03:31:34.8006760Z       "id": "REQ-INSTALL-5",
2026-06-21T03:31:34.8007276Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T03:31:34.8007385Z       "requiredStages": [
2026-06-21T03:31:34.8007493Z         "impl",
2026-06-21T03:31:34.8007603Z         "int"
2026-06-21T03:31:34.8007711Z       ],
2026-06-21T03:31:34.8007810Z       "stages": {
2026-06-21T03:31:34.8007915Z         "doc": {
2026-06-21T03:31:34.8008021Z           "complete": false,
2026-06-21T03:31:34.8008135Z           "evidence": []
2026-06-21T03:31:34.8008240Z         },
2026-06-21T03:31:34.8008345Z         "impl": {
2026-06-21T03:31:34.8008459Z           "complete": true,
2026-06-21T03:31:34.8008565Z           "evidence": [
2026-06-21T03:31:34.8008674Z             {
2026-06-21T03:31:34.8008806Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.8008908Z               "line": 5
2026-06-21T03:31:34.8009103Z             },
2026-06-21T03:31:34.8009194Z             {
2026-06-21T03:31:34.8009327Z               "path": "installer/install.sh",
2026-06-21T03:31:34.8009431Z               "line": 6
2026-06-21T03:31:34.8009538Z             }
2026-06-21T03:31:34.8009641Z           ]
2026-06-21T03:31:34.8009751Z         },
2026-06-21T03:31:34.8009853Z         "int": {
2026-06-21T03:31:34.8009965Z           "complete": true,
2026-06-21T03:31:34.8010075Z           "evidence": [
2026-06-21T03:31:34.8010177Z             {
2026-06-21T03:31:34.8010332Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:31:34.8010446Z               "line": 22
2026-06-21T03:31:34.8010543Z             }
2026-06-21T03:31:34.8010647Z           ]
2026-06-21T03:31:34.8010751Z         },
2026-06-21T03:31:34.8010862Z         "unit": {
2026-06-21T03:31:34.8010966Z           "complete": false,
2026-06-21T03:31:34.8011085Z           "evidence": []
2026-06-21T03:31:34.8011186Z         }
2026-06-21T03:31:34.8011286Z       }
2026-06-21T03:31:34.8011386Z     },
2026-06-21T03:31:34.8011482Z     {
2026-06-21T03:31:34.8011591Z       "id": "REQ-INSTALL-6",
2026-06-21T03:31:34.8012833Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T03:31:34.8012965Z       "requiredStages": [
2026-06-21T03:31:34.8013070Z         "impl",
2026-06-21T03:31:34.8013175Z         "unit"
2026-06-21T03:31:34.8013275Z       ],
2026-06-21T03:31:34.8013380Z       "stages": {
2026-06-21T03:31:34.8013486Z         "doc": {
2026-06-21T03:31:34.8013599Z           "complete": false,
2026-06-21T03:31:34.8013819Z           "evidence": []
2026-06-21T03:31:34.8013928Z         },
2026-06-21T03:31:34.8014029Z         "impl": {
2026-06-21T03:31:34.8014148Z           "complete": true,
2026-06-21T03:31:34.8014243Z           "evidence": [
2026-06-21T03:31:34.8014354Z             {
2026-06-21T03:31:34.8014491Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.8014606Z               "line": 61
2026-06-21T03:31:34.8014721Z             },
2026-06-21T03:31:34.8014811Z             {
2026-06-21T03:31:34.8014964Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.8015073Z               "line": 641
2026-06-21T03:31:34.8015182Z             },
2026-06-21T03:31:34.8015379Z             {
2026-06-21T03:31:34.8015525Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.8015630Z               "line": 191
2026-06-21T03:31:34.8015733Z             },
2026-06-21T03:31:34.8015837Z             {
2026-06-21T03:31:34.8015985Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.8016108Z               "line": 276
2026-06-21T03:31:34.8016209Z             },
2026-06-21T03:31:34.8016314Z             {
2026-06-21T03:31:34.8016447Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:31:34.8016558Z               "line": 43
2026-06-21T03:31:34.8016662Z             },
2026-06-21T03:31:34.8016762Z             {
2026-06-21T03:31:34.8016897Z               "path": "installer/install.sh",
2026-06-21T03:31:34.8017000Z               "line": 104
2026-06-21T03:31:34.8017110Z             }
2026-06-21T03:31:34.8017212Z           ]
2026-06-21T03:31:34.8017310Z         },
2026-06-21T03:31:34.8017425Z         "int": {
2026-06-21T03:31:34.8017545Z           "complete": false,
2026-06-21T03:31:34.8017653Z           "evidence": []
2026-06-21T03:31:34.8017754Z         },
2026-06-21T03:31:34.8017860Z         "unit": {
2026-06-21T03:31:34.8017982Z           "complete": true,
2026-06-21T03:31:34.8018091Z           "evidence": [
2026-06-21T03:31:34.8018192Z             {
2026-06-21T03:31:34.8018342Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:31:34.8018452Z               "line": 894
2026-06-21T03:31:34.8018548Z             }
2026-06-21T03:31:34.8018657Z           ]
2026-06-21T03:31:34.8018757Z         }
2026-06-21T03:31:34.8018857Z       }
2026-06-21T03:31:34.8019052Z     },
2026-06-21T03:31:34.8019154Z     {
2026-06-21T03:31:34.8019277Z       "id": "REQ-INSTALL-7",
2026-06-21T03:31:34.8020441Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T03:31:34.8020573Z       "requiredStages": [
2026-06-21T03:31:34.8020675Z         "impl"
2026-06-21T03:31:34.8020779Z       ],
2026-06-21T03:31:34.8020878Z       "stages": {
2026-06-21T03:31:34.8020972Z         "doc": {
2026-06-21T03:31:34.8021078Z           "complete": false,
2026-06-21T03:31:34.8021188Z           "evidence": []
2026-06-21T03:31:34.8021287Z         },
2026-06-21T03:31:34.8021393Z         "impl": {
2026-06-21T03:31:34.8021507Z           "complete": true,
2026-06-21T03:31:34.8021621Z           "evidence": [
2026-06-21T03:31:34.8021713Z             {
2026-06-21T03:31:34.8021841Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8021960Z               "line": 3920
2026-06-21T03:31:34.8022056Z             },
2026-06-21T03:31:34.8022165Z             {
2026-06-21T03:31:34.8022299Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.8022413Z               "line": 157
2026-06-21T03:31:34.8022513Z             }
2026-06-21T03:31:34.8022619Z           ]
2026-06-21T03:31:34.8022719Z         },
2026-06-21T03:31:34.8022823Z         "int": {
2026-06-21T03:31:34.8022933Z           "complete": false,
2026-06-21T03:31:34.8023142Z           "evidence": []
2026-06-21T03:31:34.8023246Z         },
2026-06-21T03:31:34.8023356Z         "unit": {
2026-06-21T03:31:34.8023473Z           "complete": false,
2026-06-21T03:31:34.8023588Z           "evidence": []
2026-06-21T03:31:34.8023688Z         }
2026-06-21T03:31:34.8023802Z       }
2026-06-21T03:31:34.8023897Z     },
2026-06-21T03:31:34.8024003Z     {
2026-06-21T03:31:34.8024112Z       "id": "REQ-INSTALL-8",
2026-06-21T03:31:34.8025210Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T03:31:34.8025520Z       "requiredStages": [
2026-06-21T03:31:34.8025624Z         "impl"
2026-06-21T03:31:34.8025728Z       ],
2026-06-21T03:31:34.8025840Z       "stages": {
2026-06-21T03:31:34.8025953Z         "doc": {
2026-06-21T03:31:34.8026066Z           "complete": false,
2026-06-21T03:31:34.8026175Z           "evidence": []
2026-06-21T03:31:34.8026284Z         },
2026-06-21T03:31:34.8026387Z         "impl": {
2026-06-21T03:31:34.8026507Z           "complete": true,
2026-06-21T03:31:34.8026617Z           "evidence": [
2026-06-21T03:31:34.8026726Z             {
2026-06-21T03:31:34.8026861Z               "path": "installer/install.ps1",
2026-06-21T03:31:34.8026974Z               "line": 184
2026-06-21T03:31:34.8027079Z             },
2026-06-21T03:31:34.8027185Z             {
2026-06-21T03:31:34.8027317Z               "path": "installer/install.sh",
2026-06-21T03:31:34.8027418Z               "line": 121
2026-06-21T03:31:34.8027519Z             }
2026-06-21T03:31:34.8027627Z           ]
2026-06-21T03:31:34.8027733Z         },
2026-06-21T03:31:34.8027838Z         "int": {
2026-06-21T03:31:34.8030724Z           "complete": false,
2026-06-21T03:31:34.8030891Z           "evidence": []
2026-06-21T03:31:34.8030992Z         },
2026-06-21T03:31:34.8031109Z         "unit": {
2026-06-21T03:31:34.8031225Z           "complete": false,
2026-06-21T03:31:34.8031340Z           "evidence": []
2026-06-21T03:31:34.8031443Z         }
2026-06-21T03:31:34.8031542Z       }
2026-06-21T03:31:34.8031639Z     },
2026-06-21T03:31:34.8031738Z     {
2026-06-21T03:31:34.8031862Z       "id": "REQ-INSTALL-9",
2026-06-21T03:31:34.8033165Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T03:31:34.8033288Z       "requiredStages": [
2026-06-21T03:31:34.8033397Z         "doc",
2026-06-21T03:31:34.8033498Z         "impl",
2026-06-21T03:31:34.8033603Z         "unit"
2026-06-21T03:31:34.8033711Z       ],
2026-06-21T03:31:34.8033816Z       "stages": {
2026-06-21T03:31:34.8033920Z         "doc": {
2026-06-21T03:31:34.8034029Z           "complete": true,
2026-06-21T03:31:34.8034133Z           "evidence": [
2026-06-21T03:31:34.8034234Z             {
2026-06-21T03:31:34.8034362Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8034477Z               "line": 771
2026-06-21T03:31:34.8034582Z             }
2026-06-21T03:31:34.8034686Z           ]
2026-06-21T03:31:34.8034787Z         },
2026-06-21T03:31:34.8034897Z         "impl": {
2026-06-21T03:31:34.8034996Z           "complete": true,
2026-06-21T03:31:34.8035117Z           "evidence": [
2026-06-21T03:31:34.8035226Z             {
2026-06-21T03:31:34.8035358Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8035474Z               "line": 2535
2026-06-21T03:31:34.8035578Z             },
2026-06-21T03:31:34.8035687Z             {
2026-06-21T03:31:34.8035950Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8036071Z               "line": 2559
2026-06-21T03:31:34.8036174Z             }
2026-06-21T03:31:34.8036275Z           ]
2026-06-21T03:31:34.8036380Z         },
2026-06-21T03:31:34.8036485Z         "int": {
2026-06-21T03:31:34.8036597Z           "complete": false,
2026-06-21T03:31:34.8036707Z           "evidence": []
2026-06-21T03:31:34.8036811Z         },
2026-06-21T03:31:34.8036919Z         "unit": {
2026-06-21T03:31:34.8037029Z           "complete": true,
2026-06-21T03:31:34.8037139Z           "evidence": [
2026-06-21T03:31:34.8037243Z             {
2026-06-21T03:31:34.8037368Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8037591Z               "line": 7591
2026-06-21T03:31:34.8037697Z             },
2026-06-21T03:31:34.8037807Z             {
2026-06-21T03:31:34.8037930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8038041Z               "line": 8433
2026-06-21T03:31:34.8038145Z             }
2026-06-21T03:31:34.8038250Z           ]
2026-06-21T03:31:34.8038351Z         }
2026-06-21T03:31:34.8038454Z       }
2026-06-21T03:31:34.8038555Z     },
2026-06-21T03:31:34.8038656Z     {
2026-06-21T03:31:34.8038765Z       "id": "REQ-KICK-1",
2026-06-21T03:31:34.8041379Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T03:31:34.8041514Z       "requiredStages": [
2026-06-21T03:31:34.8041622Z         "doc",
2026-06-21T03:31:34.8041727Z         "impl",
2026-06-21T03:31:34.8041824Z         "unit",
2026-06-21T03:31:34.8041933Z         "int"
2026-06-21T03:31:34.8042036Z       ],
2026-06-21T03:31:34.8042136Z       "stages": {
2026-06-21T03:31:34.8042242Z         "doc": {
2026-06-21T03:31:34.8042360Z           "complete": true,
2026-06-21T03:31:34.8042470Z           "evidence": [
2026-06-21T03:31:34.8042575Z             {
2026-06-21T03:31:34.8042699Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8042805Z               "line": 342
2026-06-21T03:31:34.8042909Z             }
2026-06-21T03:31:34.8043013Z           ]
2026-06-21T03:31:34.8043119Z         },
2026-06-21T03:31:34.8043224Z         "impl": {
2026-06-21T03:31:34.8043347Z           "complete": true,
2026-06-21T03:31:34.8043449Z           "evidence": [
2026-06-21T03:31:34.8043557Z             {
2026-06-21T03:31:34.8043715Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8043825Z               "line": 41
2026-06-21T03:31:34.8043929Z             },
2026-06-21T03:31:34.8044034Z             {
2026-06-21T03:31:34.8044168Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8044276Z               "line": 701
2026-06-21T03:31:34.8044381Z             }
2026-06-21T03:31:34.8044485Z           ]
2026-06-21T03:31:34.8044589Z         },
2026-06-21T03:31:34.8044703Z         "int": {
2026-06-21T03:31:34.8044814Z           "complete": true,
2026-06-21T03:31:34.8044927Z           "evidence": [
2026-06-21T03:31:34.8045037Z             {
2026-06-21T03:31:34.8045184Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8045293Z               "line": 913
2026-06-21T03:31:34.8045395Z             }
2026-06-21T03:31:34.8045499Z           ]
2026-06-21T03:31:34.8045594Z         },
2026-06-21T03:31:34.8045805Z         "unit": {
2026-06-21T03:31:34.8045923Z           "complete": true,
2026-06-21T03:31:34.8046030Z           "evidence": [
2026-06-21T03:31:34.8046138Z             {
2026-06-21T03:31:34.8046282Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8046391Z               "line": 205
2026-06-21T03:31:34.8046491Z             }
2026-06-21T03:31:34.8046602Z           ]
2026-06-21T03:31:34.8046706Z         }
2026-06-21T03:31:34.8046810Z       }
2026-06-21T03:31:34.8046912Z     },
2026-06-21T03:31:34.8047017Z     {
2026-06-21T03:31:34.8047139Z       "id": "REQ-MANIFEST-1",
2026-06-21T03:31:34.8047357Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T03:31:34.8047565Z       "requiredStages": [
2026-06-21T03:31:34.8047671Z         "doc",
2026-06-21T03:31:34.8047775Z         "impl",
2026-06-21T03:31:34.8047880Z         "unit"
2026-06-21T03:31:34.8047981Z       ],
2026-06-21T03:31:34.8048085Z       "stages": {
2026-06-21T03:31:34.8048190Z         "doc": {
2026-06-21T03:31:34.8048305Z           "complete": true,
2026-06-21T03:31:34.8048414Z           "evidence": [
2026-06-21T03:31:34.8048519Z             {
2026-06-21T03:31:34.8048648Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8048758Z               "line": 19
2026-06-21T03:31:34.8048858Z             }
2026-06-21T03:31:34.8049038Z           ]
2026-06-21T03:31:34.8049144Z         },
2026-06-21T03:31:34.8049245Z         "impl": {
2026-06-21T03:31:34.8049362Z           "complete": true,
2026-06-21T03:31:34.8049478Z           "evidence": [
2026-06-21T03:31:34.8049578Z             {
2026-06-21T03:31:34.8049734Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8049839Z               "line": 18
2026-06-21T03:31:34.8049943Z             }
2026-06-21T03:31:34.8050050Z           ]
2026-06-21T03:31:34.8050151Z         },
2026-06-21T03:31:34.8050262Z         "int": {
2026-06-21T03:31:34.8050379Z           "complete": false,
2026-06-21T03:31:34.8050485Z           "evidence": []
2026-06-21T03:31:34.8050576Z         },
2026-06-21T03:31:34.8050694Z         "unit": {
2026-06-21T03:31:34.8050796Z           "complete": true,
2026-06-21T03:31:34.8050900Z           "evidence": [
2026-06-21T03:31:34.8051009Z             {
2026-06-21T03:31:34.8051158Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8051277Z               "line": 1029
2026-06-21T03:31:34.8051377Z             },
2026-06-21T03:31:34.8051478Z             {
2026-06-21T03:31:34.8051615Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8051730Z               "line": 1325
2026-06-21T03:31:34.8051835Z             },
2026-06-21T03:31:34.8051935Z             {
2026-06-21T03:31:34.8052079Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8052192Z               "line": 1337
2026-06-21T03:31:34.8052297Z             },
2026-06-21T03:31:34.8052403Z             {
2026-06-21T03:31:34.8052540Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8052653Z               "line": 1348
2026-06-21T03:31:34.8052759Z             },
2026-06-21T03:31:34.8052868Z             {
2026-06-21T03:31:34.8053011Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8053126Z               "line": 1365
2026-06-21T03:31:34.8053235Z             },
2026-06-21T03:31:34.8053326Z             {
2026-06-21T03:31:34.8053469Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8053578Z               "line": 1379
2026-06-21T03:31:34.8053674Z             },
2026-06-21T03:31:34.8053774Z             {
2026-06-21T03:31:34.8053922Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8054033Z               "line": 1495
2026-06-21T03:31:34.8054127Z             },
2026-06-21T03:31:34.8054232Z             {
2026-06-21T03:31:34.8054376Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8054484Z               "line": 1510
2026-06-21T03:31:34.8054691Z             },
2026-06-21T03:31:34.8054784Z             {
2026-06-21T03:31:34.8054932Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8055041Z               "line": 1621
2026-06-21T03:31:34.8055144Z             },
2026-06-21T03:31:34.8055249Z             {
2026-06-21T03:31:34.8055393Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8055501Z               "line": 1632
2026-06-21T03:31:34.8055597Z             }
2026-06-21T03:31:34.8055702Z           ]
2026-06-21T03:31:34.8055802Z         }
2026-06-21T03:31:34.8055907Z       }
2026-06-21T03:31:34.8056007Z     },
2026-06-21T03:31:34.8056208Z     {
2026-06-21T03:31:34.8056331Z       "id": "REQ-MANIFEST-2",
2026-06-21T03:31:34.8056856Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T03:31:34.8056970Z       "requiredStages": [
2026-06-21T03:31:34.8057070Z         "doc",
2026-06-21T03:31:34.8057176Z         "impl",
2026-06-21T03:31:34.8057280Z         "unit"
2026-06-21T03:31:34.8057385Z       ],
2026-06-21T03:31:34.8057491Z       "stages": {
2026-06-21T03:31:34.8057605Z         "doc": {
2026-06-21T03:31:34.8057713Z           "complete": true,
2026-06-21T03:31:34.8057822Z           "evidence": [
2026-06-21T03:31:34.8057926Z             {
2026-06-21T03:31:34.8058044Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8058154Z               "line": 75
2026-06-21T03:31:34.8058241Z             }
2026-06-21T03:31:34.8058335Z           ]
2026-06-21T03:31:34.8058440Z         },
2026-06-21T03:31:34.8058546Z         "impl": {
2026-06-21T03:31:34.8058669Z           "complete": true,
2026-06-21T03:31:34.8058769Z           "evidence": [
2026-06-21T03:31:34.8058874Z             {
2026-06-21T03:31:34.8059103Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8059217Z               "line": 82
2026-06-21T03:31:34.8059313Z             },
2026-06-21T03:31:34.8059423Z             {
2026-06-21T03:31:34.8059584Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8059694Z               "line": 15
2026-06-21T03:31:34.8059800Z             },
2026-06-21T03:31:34.8059904Z             {
2026-06-21T03:31:34.8060048Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8060143Z               "line": 65
2026-06-21T03:31:34.8060247Z             },
2026-06-21T03:31:34.8060346Z             {
2026-06-21T03:31:34.8060493Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8060601Z               "line": 83
2026-06-21T03:31:34.8060702Z             },
2026-06-21T03:31:34.8060812Z             {
2026-06-21T03:31:34.8060949Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8061060Z               "line": 183
2026-06-21T03:31:34.8061165Z             },
2026-06-21T03:31:34.8061264Z             {
2026-06-21T03:31:34.8061417Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8061522Z               "line": 527
2026-06-21T03:31:34.8061622Z             },
2026-06-21T03:31:34.8061723Z             {
2026-06-21T03:31:34.8061870Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8061975Z               "line": 553
2026-06-21T03:31:34.8062080Z             },
2026-06-21T03:31:34.8062180Z             {
2026-06-21T03:31:34.8062324Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8062428Z               "line": 671
2026-06-21T03:31:34.8062537Z             },
2026-06-21T03:31:34.8062630Z             {
2026-06-21T03:31:34.8062776Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8062881Z               "line": 696
2026-06-21T03:31:34.8062987Z             },
2026-06-21T03:31:34.8063095Z             {
2026-06-21T03:31:34.8063237Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8063343Z               "line": 719
2026-06-21T03:31:34.8063547Z             },
2026-06-21T03:31:34.8063653Z             {
2026-06-21T03:31:34.8063795Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8063901Z               "line": 734
2026-06-21T03:31:34.8064006Z             },
2026-06-21T03:31:34.8064105Z             {
2026-06-21T03:31:34.8064239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8064348Z               "line": 5567
2026-06-21T03:31:34.8064453Z             },
2026-06-21T03:31:34.8064554Z             {
2026-06-21T03:31:34.8064677Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8064782Z               "line": 5581
2026-06-21T03:31:34.8064888Z             },
2026-06-21T03:31:34.8065087Z             {
2026-06-21T03:31:34.8065213Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8065330Z               "line": 5615
2026-06-21T03:31:34.8065430Z             }
2026-06-21T03:31:34.8065539Z           ]
2026-06-21T03:31:34.8065638Z         },
2026-06-21T03:31:34.8065738Z         "int": {
2026-06-21T03:31:34.8065852Z           "complete": false,
2026-06-21T03:31:34.8065962Z           "evidence": []
2026-06-21T03:31:34.8066057Z         },
2026-06-21T03:31:34.8066157Z         "unit": {
2026-06-21T03:31:34.8066282Z           "complete": true,
2026-06-21T03:31:34.8066395Z           "evidence": [
2026-06-21T03:31:34.8066497Z             {
2026-06-21T03:31:34.8066648Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8066753Z               "line": 921
2026-06-21T03:31:34.8066854Z             },
2026-06-21T03:31:34.8066954Z             {
2026-06-21T03:31:34.8067092Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8067206Z               "line": 211
2026-06-21T03:31:34.8067306Z             },
2026-06-21T03:31:34.8067412Z             {
2026-06-21T03:31:34.8067554Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8067654Z               "line": 272
2026-06-21T03:31:34.8067760Z             },
2026-06-21T03:31:34.8067864Z             {
2026-06-21T03:31:34.8068007Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8068118Z               "line": 313
2026-06-21T03:31:34.8068211Z             },
2026-06-21T03:31:34.8068311Z             {
2026-06-21T03:31:34.8068459Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8068562Z               "line": 325
2026-06-21T03:31:34.8068661Z             },
2026-06-21T03:31:34.8068758Z             {
2026-06-21T03:31:34.8068900Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8069515Z               "line": 336
2026-06-21T03:31:34.8069698Z             },
2026-06-21T03:31:34.8069806Z             {
2026-06-21T03:31:34.8069954Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8070064Z               "line": 345
2026-06-21T03:31:34.8070168Z             },
2026-06-21T03:31:34.8070259Z             {
2026-06-21T03:31:34.8070407Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8070517Z               "line": 361
2026-06-21T03:31:34.8070627Z             },
2026-06-21T03:31:34.8070736Z             {
2026-06-21T03:31:34.8070877Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8070978Z               "line": 444
2026-06-21T03:31:34.8071081Z             },
2026-06-21T03:31:34.8071185Z             {
2026-06-21T03:31:34.8071324Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8071434Z               "line": 958
2026-06-21T03:31:34.8071538Z             },
2026-06-21T03:31:34.8071644Z             {
2026-06-21T03:31:34.8071791Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8071891Z               "line": 982
2026-06-21T03:31:34.8071997Z             },
2026-06-21T03:31:34.8072101Z             {
2026-06-21T03:31:34.8072250Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8072359Z               "line": 1008
2026-06-21T03:31:34.8072555Z             },
2026-06-21T03:31:34.8072664Z             {
2026-06-21T03:31:34.8072807Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8072927Z               "line": 1027
2026-06-21T03:31:34.8073035Z             },
2026-06-21T03:31:34.8073136Z             {
2026-06-21T03:31:34.8073284Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8073398Z               "line": 1058
2026-06-21T03:31:34.8073504Z             },
2026-06-21T03:31:34.8073599Z             {
2026-06-21T03:31:34.8073745Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.8073855Z               "line": 309
2026-06-21T03:31:34.8074069Z             },
2026-06-21T03:31:34.8074175Z             {
2026-06-21T03:31:34.8074313Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.8074422Z               "line": 606
2026-06-21T03:31:34.8074523Z             },
2026-06-21T03:31:34.8074628Z             {
2026-06-21T03:31:34.8074761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8074871Z               "line": 8610
2026-06-21T03:31:34.8074976Z             },
2026-06-21T03:31:34.8075075Z             {
2026-06-21T03:31:34.8075200Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8075314Z               "line": 9558
2026-06-21T03:31:34.8075425Z             }
2026-06-21T03:31:34.8075529Z           ]
2026-06-21T03:31:34.8075629Z         }
2026-06-21T03:31:34.8075729Z       }
2026-06-21T03:31:34.8075830Z     },
2026-06-21T03:31:34.8075937Z     {
2026-06-21T03:31:34.8076062Z       "id": "REQ-MANIFEST-3",
2026-06-21T03:31:34.8076731Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T03:31:34.8076865Z       "requiredStages": [
2026-06-21T03:31:34.8076970Z         "doc",
2026-06-21T03:31:34.8077076Z         "impl",
2026-06-21T03:31:34.8077180Z         "unit"
2026-06-21T03:31:34.8077294Z       ],
2026-06-21T03:31:34.8077395Z       "stages": {
2026-06-21T03:31:34.8077500Z         "doc": {
2026-06-21T03:31:34.8077604Z           "complete": true,
2026-06-21T03:31:34.8077710Z           "evidence": [
2026-06-21T03:31:34.8077819Z             {
2026-06-21T03:31:34.8077938Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8078054Z               "line": 81
2026-06-21T03:31:34.8078142Z             }
2026-06-21T03:31:34.8078248Z           ]
2026-06-21T03:31:34.8078354Z         },
2026-06-21T03:31:34.8078462Z         "impl": {
2026-06-21T03:31:34.8078582Z           "complete": true,
2026-06-21T03:31:34.8078693Z           "evidence": [
2026-06-21T03:31:34.8078805Z             {
2026-06-21T03:31:34.8079029Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8079146Z               "line": 92
2026-06-21T03:31:34.8079241Z             },
2026-06-21T03:31:34.8079337Z             {
2026-06-21T03:31:34.8079484Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8079585Z               "line": 101
2026-06-21T03:31:34.8079689Z             },
2026-06-21T03:31:34.8079789Z             {
2026-06-21T03:31:34.8079924Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8080043Z               "line": 132
2026-06-21T03:31:34.8080137Z             },
2026-06-21T03:31:34.8080238Z             {
2026-06-21T03:31:34.8080376Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8080490Z               "line": 577
2026-06-21T03:31:34.8080597Z             },
2026-06-21T03:31:34.8080704Z             {
2026-06-21T03:31:34.8080854Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8080963Z               "line": 633
2026-06-21T03:31:34.8081086Z             },
2026-06-21T03:31:34.8081192Z             {
2026-06-21T03:31:34.8081320Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8081442Z               "line": 5628
2026-06-21T03:31:34.8081543Z             },
2026-06-21T03:31:34.8081759Z             {
2026-06-21T03:31:34.8081884Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8081994Z               "line": 5654
2026-06-21T03:31:34.8082098Z             }
2026-06-21T03:31:34.8082204Z           ]
2026-06-21T03:31:34.8082309Z         },
2026-06-21T03:31:34.8082408Z         "int": {
2026-06-21T03:31:34.8082528Z           "complete": false,
2026-06-21T03:31:34.8082642Z           "evidence": []
2026-06-21T03:31:34.8082747Z         },
2026-06-21T03:31:34.8082852Z         "unit": {
2026-06-21T03:31:34.8082962Z           "complete": true,
2026-06-21T03:31:34.8083066Z           "evidence": [
2026-06-21T03:31:34.8083267Z             {
2026-06-21T03:31:34.8083415Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8083524Z               "line": 371
2026-06-21T03:31:34.8083634Z             },
2026-06-21T03:31:34.8083735Z             {
2026-06-21T03:31:34.8083886Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8084001Z               "line": 429
2026-06-21T03:31:34.8084103Z             },
2026-06-21T03:31:34.8084210Z             {
2026-06-21T03:31:34.8084358Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8084473Z               "line": 1082
2026-06-21T03:31:34.8084573Z             },
2026-06-21T03:31:34.8084672Z             {
2026-06-21T03:31:34.8084802Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8084911Z               "line": 8703
2026-06-21T03:31:34.8085021Z             }
2026-06-21T03:31:34.8085121Z           ]
2026-06-21T03:31:34.8085225Z         }
2026-06-21T03:31:34.8085326Z       }
2026-06-21T03:31:34.8085436Z     },
2026-06-21T03:31:34.8085540Z     {
2026-06-21T03:31:34.8085665Z       "id": "REQ-MANIFEST-4",
2026-06-21T03:31:34.8086394Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T03:31:34.8086521Z       "requiredStages": [
2026-06-21T03:31:34.8086636Z         "doc",
2026-06-21T03:31:34.8086740Z         "impl",
2026-06-21T03:31:34.8086848Z         "unit"
2026-06-21T03:31:34.8086944Z       ],
2026-06-21T03:31:34.8087044Z       "stages": {
2026-06-21T03:31:34.8087153Z         "doc": {
2026-06-21T03:31:34.8087268Z           "complete": true,
2026-06-21T03:31:34.8087378Z           "evidence": [
2026-06-21T03:31:34.8087482Z             {
2026-06-21T03:31:34.8087602Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8087716Z               "line": 88
2026-06-21T03:31:34.8087820Z             }
2026-06-21T03:31:34.8087931Z           ]
2026-06-21T03:31:34.8088035Z         },
2026-06-21T03:31:34.8088144Z         "impl": {
2026-06-21T03:31:34.8088251Z           "complete": true,
2026-06-21T03:31:34.8088364Z           "evidence": [
2026-06-21T03:31:34.8088469Z             {
2026-06-21T03:31:34.8088618Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8088722Z               "line": 100
2026-06-21T03:31:34.8088823Z             },
2026-06-21T03:31:34.8088928Z             {
2026-06-21T03:31:34.8089162Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8089272Z               "line": 183
2026-06-21T03:31:34.8089398Z             },
2026-06-21T03:31:34.8089503Z             {
2026-06-21T03:31:34.8089645Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8089748Z               "line": 83
2026-06-21T03:31:34.8089854Z             },
2026-06-21T03:31:34.8089955Z             {
2026-06-21T03:31:34.8090110Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8090226Z               "line": 629
2026-06-21T03:31:34.8090330Z             },
2026-06-21T03:31:34.8090435Z             {
2026-06-21T03:31:34.8090569Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8090678Z               "line": 654
2026-06-21T03:31:34.8090893Z             }
2026-06-21T03:31:34.8090993Z           ]
2026-06-21T03:31:34.8091094Z         },
2026-06-21T03:31:34.8091199Z         "int": {
2026-06-21T03:31:34.8091308Z           "complete": false,
2026-06-21T03:31:34.8091414Z           "evidence": []
2026-06-21T03:31:34.8091518Z         },
2026-06-21T03:31:34.8091623Z         "unit": {
2026-06-21T03:31:34.8091748Z           "complete": true,
2026-06-21T03:31:34.8091884Z           "evidence": [
2026-06-21T03:31:34.8091998Z             {
2026-06-21T03:31:34.8092151Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8092253Z               "line": 1445
2026-06-21T03:31:34.8092363Z             },
2026-06-21T03:31:34.8092568Z             {
2026-06-21T03:31:34.8092716Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8092826Z               "line": 1478
2026-06-21T03:31:34.8092930Z             },
2026-06-21T03:31:34.8093041Z             {
2026-06-21T03:31:34.8093188Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8093297Z               "line": 988
2026-06-21T03:31:34.8093408Z             }
2026-06-21T03:31:34.8093503Z           ]
2026-06-21T03:31:34.8093607Z         }
2026-06-21T03:31:34.8093700Z       }
2026-06-21T03:31:34.8093803Z     },
2026-06-21T03:31:34.8093898Z     {
2026-06-21T03:31:34.8094029Z       "id": "REQ-MANIFEST-5",
2026-06-21T03:31:34.8096954Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T03:31:34.8097101Z       "requiredStages": [
2026-06-21T03:31:34.8097206Z         "doc",
2026-06-21T03:31:34.8097314Z         "impl",
2026-06-21T03:31:34.8097418Z         "unit"
2026-06-21T03:31:34.8097533Z       ],
2026-06-21T03:31:34.8097643Z       "stages": {
2026-06-21T03:31:34.8097756Z         "doc": {
2026-06-21T03:31:34.8097881Z           "complete": true,
2026-06-21T03:31:34.8097985Z           "evidence": [
2026-06-21T03:31:34.8098094Z             {
2026-06-21T03:31:34.8098215Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8098324Z               "line": 83
2026-06-21T03:31:34.8098424Z             }
2026-06-21T03:31:34.8098534Z           ]
2026-06-21T03:31:34.8098643Z         },
2026-06-21T03:31:34.8098748Z         "impl": {
2026-06-21T03:31:34.8098868Z           "complete": true,
2026-06-21T03:31:34.8099058Z           "evidence": [
2026-06-21T03:31:34.8099174Z             {
2026-06-21T03:31:34.8099325Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8099450Z               "line": 120
2026-06-21T03:31:34.8099559Z             }
2026-06-21T03:31:34.8099649Z           ]
2026-06-21T03:31:34.8099756Z         },
2026-06-21T03:31:34.8099855Z         "int": {
2026-06-21T03:31:34.8099973Z           "complete": false,
2026-06-21T03:31:34.8100078Z           "evidence": []
2026-06-21T03:31:34.8100186Z         },
2026-06-21T03:31:34.8100289Z         "unit": {
2026-06-21T03:31:34.8100404Z           "complete": true,
2026-06-21T03:31:34.8100515Z           "evidence": [
2026-06-21T03:31:34.8100623Z             {
2026-06-21T03:31:34.8100777Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:31:34.8100990Z               "line": 404
2026-06-21T03:31:34.8101097Z             },
2026-06-21T03:31:34.8101206Z             {
2026-06-21T03:31:34.8101354Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8101463Z               "line": 1155
2026-06-21T03:31:34.8101567Z             },
2026-06-21T03:31:34.8101674Z             {
2026-06-21T03:31:34.8101829Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8101944Z               "line": 1184
2026-06-21T03:31:34.8102046Z             },
2026-06-21T03:31:34.8102139Z             {
2026-06-21T03:31:34.8102284Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8102492Z               "line": 1224
2026-06-21T03:31:34.8102591Z             },
2026-06-21T03:31:34.8102682Z             {
2026-06-21T03:31:34.8102833Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8102943Z               "line": 1239
2026-06-21T03:31:34.8103038Z             }
2026-06-21T03:31:34.8103147Z           ]
2026-06-21T03:31:34.8103252Z         }
2026-06-21T03:31:34.8103362Z       }
2026-06-21T03:31:34.8103461Z     },
2026-06-21T03:31:34.8103572Z     {
2026-06-21T03:31:34.8103696Z       "id": "REQ-MANIFEST-6",
2026-06-21T03:31:34.8105879Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T03:31:34.8106016Z       "requiredStages": [
2026-06-21T03:31:34.8106117Z         "doc",
2026-06-21T03:31:34.8106222Z         "unit"
2026-06-21T03:31:34.8106336Z       ],
2026-06-21T03:31:34.8106442Z       "stages": {
2026-06-21T03:31:34.8106551Z         "doc": {
2026-06-21T03:31:34.8106674Z           "complete": true,
2026-06-21T03:31:34.8106785Z           "evidence": [
2026-06-21T03:31:34.8106894Z             {
2026-06-21T03:31:34.8107018Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8107134Z               "line": 141
2026-06-21T03:31:34.8107237Z             }
2026-06-21T03:31:34.8107342Z           ]
2026-06-21T03:31:34.8107449Z         },
2026-06-21T03:31:34.8107556Z         "impl": {
2026-06-21T03:31:34.8107680Z           "complete": false,
2026-06-21T03:31:34.8107794Z           "evidence": []
2026-06-21T03:31:34.8107902Z         },
2026-06-21T03:31:34.8108001Z         "int": {
2026-06-21T03:31:34.8108116Z           "complete": false,
2026-06-21T03:31:34.8108226Z           "evidence": []
2026-06-21T03:31:34.8108325Z         },
2026-06-21T03:31:34.8108441Z         "unit": {
2026-06-21T03:31:34.8108550Z           "complete": true,
2026-06-21T03:31:34.8108654Z           "evidence": [
2026-06-21T03:31:34.8108761Z             {
2026-06-21T03:31:34.8108912Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.8109108Z               "line": 1261
2026-06-21T03:31:34.8109218Z             }
2026-06-21T03:31:34.8109318Z           ]
2026-06-21T03:31:34.8109437Z         }
2026-06-21T03:31:34.8109547Z       }
2026-06-21T03:31:34.8109638Z     },
2026-06-21T03:31:34.8109734Z     {
2026-06-21T03:31:34.8109852Z       "id": "REQ-MANIFEST-7",
2026-06-21T03:31:34.8112906Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T03:31:34.8113185Z       "requiredStages": [
2026-06-21T03:31:34.8113388Z         "doc",
2026-06-21T03:31:34.8113503Z         "impl",
2026-06-21T03:31:34.8113608Z         "unit"
2026-06-21T03:31:34.8113716Z       ],
2026-06-21T03:31:34.8113822Z       "stages": {
2026-06-21T03:31:34.8113932Z         "doc": {
2026-06-21T03:31:34.8114041Z           "complete": true,
2026-06-21T03:31:34.8114161Z           "evidence": [
2026-06-21T03:31:34.8114265Z             {
2026-06-21T03:31:34.8114394Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8114500Z               "line": 35
2026-06-21T03:31:34.8114599Z             }
2026-06-21T03:31:34.8114709Z           ]
2026-06-21T03:31:34.8114795Z         },
2026-06-21T03:31:34.8114904Z         "impl": {
2026-06-21T03:31:34.8115018Z           "complete": true,
2026-06-21T03:31:34.8115134Z           "evidence": [
2026-06-21T03:31:34.8115238Z             {
2026-06-21T03:31:34.8115386Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8115506Z               "line": 54
2026-06-21T03:31:34.8115610Z             }
2026-06-21T03:31:34.8115721Z           ]
2026-06-21T03:31:34.8115826Z         },
2026-06-21T03:31:34.8115928Z         "int": {
2026-06-21T03:31:34.8116048Z           "complete": false,
2026-06-21T03:31:34.8116163Z           "evidence": []
2026-06-21T03:31:34.8116271Z         },
2026-06-21T03:31:34.8116377Z         "unit": {
2026-06-21T03:31:34.8116501Z           "complete": true,
2026-06-21T03:31:34.8116620Z           "evidence": [
2026-06-21T03:31:34.8116726Z             {
2026-06-21T03:31:34.8116882Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8116997Z               "line": 1638
2026-06-21T03:31:34.8117107Z             }
2026-06-21T03:31:34.8117206Z           ]
2026-06-21T03:31:34.8117306Z         }
2026-06-21T03:31:34.8117412Z       }
2026-06-21T03:31:34.8117517Z     },
2026-06-21T03:31:34.8117626Z     {
2026-06-21T03:31:34.8117737Z       "id": "REQ-MANIFEST-8",
2026-06-21T03:31:34.8120050Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T03:31:34.8120203Z       "requiredStages": [
2026-06-21T03:31:34.8120298Z         "doc",
2026-06-21T03:31:34.8120407Z         "impl",
2026-06-21T03:31:34.8120518Z         "unit",
2026-06-21T03:31:34.8120627Z         "int"
2026-06-21T03:31:34.8120731Z       ],
2026-06-21T03:31:34.8120838Z       "stages": {
2026-06-21T03:31:34.8120947Z         "doc": {
2026-06-21T03:31:34.8121065Z           "complete": true,
2026-06-21T03:31:34.8121183Z           "evidence": [
2026-06-21T03:31:34.8121297Z             {
2026-06-21T03:31:34.8121410Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8121525Z               "line": 184
2026-06-21T03:31:34.8125612Z             },
2026-06-21T03:31:34.8125751Z             {
2026-06-21T03:31:34.8126062Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8126185Z               "line": 46
2026-06-21T03:31:34.8126300Z             }
2026-06-21T03:31:34.8126405Z           ]
2026-06-21T03:31:34.8126512Z         },
2026-06-21T03:31:34.8126627Z         "impl": {
2026-06-21T03:31:34.8126752Z           "complete": true,
2026-06-21T03:31:34.8126865Z           "evidence": [
2026-06-21T03:31:34.8126975Z             {
2026-06-21T03:31:34.8127137Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.8127242Z               "line": 222
2026-06-21T03:31:34.8127348Z             },
2026-06-21T03:31:34.8127442Z             {
2026-06-21T03:31:34.8127690Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.8127804Z               "line": 306
2026-06-21T03:31:34.8127906Z             }
2026-06-21T03:31:34.8128019Z           ]
2026-06-21T03:31:34.8128119Z         },
2026-06-21T03:31:34.8128230Z         "int": {
2026-06-21T03:31:34.8128343Z           "complete": true,
2026-06-21T03:31:34.8128462Z           "evidence": [
2026-06-21T03:31:34.8128569Z             {
2026-06-21T03:31:34.8128729Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:31:34.8128838Z               "line": 18
2026-06-21T03:31:34.8129031Z             }
2026-06-21T03:31:34.8129136Z           ]
2026-06-21T03:31:34.8129232Z         },
2026-06-21T03:31:34.8129342Z         "unit": {
2026-06-21T03:31:34.8129455Z           "complete": true,
2026-06-21T03:31:34.8129571Z           "evidence": [
2026-06-21T03:31:34.8129680Z             {
2026-06-21T03:31:34.8129833Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8129962Z               "line": 1656
2026-06-21T03:31:34.8130066Z             },
2026-06-21T03:31:34.8130177Z             {
2026-06-21T03:31:34.8130333Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.8130448Z               "line": 316
2026-06-21T03:31:34.8130557Z             },
2026-06-21T03:31:34.8130648Z             {
2026-06-21T03:31:34.8130807Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.8130924Z               "line": 332
2026-06-21T03:31:34.8131034Z             },
2026-06-21T03:31:34.8131131Z             {
2026-06-21T03:31:34.8131287Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.8131407Z               "line": 345
2026-06-21T03:31:34.8131507Z             },
2026-06-21T03:31:34.8131606Z             {
2026-06-21T03:31:34.8131753Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.8131857Z               "line": 422
2026-06-21T03:31:34.8131961Z             },
2026-06-21T03:31:34.8132075Z             {
2026-06-21T03:31:34.8132209Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:31:34.8132317Z               "line": 436
2026-06-21T03:31:34.8132429Z             }
2026-06-21T03:31:34.8132533Z           ]
2026-06-21T03:31:34.8132642Z         }
2026-06-21T03:31:34.8132748Z       }
2026-06-21T03:31:34.8132858Z     },
2026-06-21T03:31:34.8132971Z     {
2026-06-21T03:31:34.8133086Z       "id": "REQ-MESH-1",
2026-06-21T03:31:34.8135242Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T03:31:34.8135372Z       "requiredStages": [
2026-06-21T03:31:34.8135481Z         "impl",
2026-06-21T03:31:34.8135582Z         "unit",
2026-06-21T03:31:34.8135691Z         "int"
2026-06-21T03:31:34.8135930Z       ],
2026-06-21T03:31:34.8136039Z       "stages": {
2026-06-21T03:31:34.8136148Z         "doc": {
2026-06-21T03:31:34.8136259Z           "complete": false,
2026-06-21T03:31:34.8136368Z           "evidence": []
2026-06-21T03:31:34.8136473Z         },
2026-06-21T03:31:34.8136579Z         "impl": {
2026-06-21T03:31:34.8136697Z           "complete": true,
2026-06-21T03:31:34.8136807Z           "evidence": [
2026-06-21T03:31:34.8136922Z             {
2026-06-21T03:31:34.8137072Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8137187Z               "line": 922
2026-06-21T03:31:34.8137293Z             },
2026-06-21T03:31:34.8137492Z             {
2026-06-21T03:31:34.8137660Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8137773Z               "line": 38
2026-06-21T03:31:34.8137879Z             },
2026-06-21T03:31:34.8137980Z             {
2026-06-21T03:31:34.8138131Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8138251Z               "line": 161
2026-06-21T03:31:34.8138346Z             },
2026-06-21T03:31:34.8138456Z             {
2026-06-21T03:31:34.8138598Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8138708Z               "line": 206
2026-06-21T03:31:34.8138814Z             },
2026-06-21T03:31:34.8138922Z             {
2026-06-21T03:31:34.8139172Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8139280Z               "line": 57
2026-06-21T03:31:34.8139393Z             },
2026-06-21T03:31:34.8139508Z             {
2026-06-21T03:31:34.8139663Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8139778Z               "line": 24
2026-06-21T03:31:34.8139883Z             },
2026-06-21T03:31:34.8139987Z             {
2026-06-21T03:31:34.8140141Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8140245Z               "line": 142
2026-06-21T03:31:34.8140354Z             },
2026-06-21T03:31:34.8140460Z             {
2026-06-21T03:31:34.8140621Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8140732Z               "line": 162
2026-06-21T03:31:34.8140841Z             }
2026-06-21T03:31:34.8140945Z           ]
2026-06-21T03:31:34.8141047Z         },
2026-06-21T03:31:34.8141160Z         "int": {
2026-06-21T03:31:34.8141265Z           "complete": true,
2026-06-21T03:31:34.8141376Z           "evidence": [
2026-06-21T03:31:34.8141480Z             {
2026-06-21T03:31:34.8141657Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:31:34.8141762Z               "line": 67
2026-06-21T03:31:34.8141876Z             },
2026-06-21T03:31:34.8141986Z             {
2026-06-21T03:31:34.8142142Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:31:34.8142255Z               "line": 93
2026-06-21T03:31:34.8142352Z             },
2026-06-21T03:31:34.8142459Z             {
2026-06-21T03:31:34.8142612Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:31:34.8142722Z               "line": 117
2026-06-21T03:31:34.8142830Z             },
2026-06-21T03:31:34.8142936Z             {
2026-06-21T03:31:34.8143084Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:31:34.8143193Z               "line": 134
2026-06-21T03:31:34.8143294Z             }
2026-06-21T03:31:34.8143399Z           ]
2026-06-21T03:31:34.8143508Z         },
2026-06-21T03:31:34.8143614Z         "unit": {
2026-06-21T03:31:34.8143727Z           "complete": true,
2026-06-21T03:31:34.8143841Z           "evidence": [
2026-06-21T03:31:34.8143943Z             {
2026-06-21T03:31:34.8144099Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8144210Z               "line": 427
2026-06-21T03:31:34.8144314Z             },
2026-06-21T03:31:34.8144418Z             {
2026-06-21T03:31:34.8144573Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8144794Z               "line": 376
2026-06-21T03:31:34.8144899Z             },
2026-06-21T03:31:34.8145002Z             {
2026-06-21T03:31:34.8145159Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8145270Z               "line": 412
2026-06-21T03:31:34.8145383Z             },
2026-06-21T03:31:34.8145479Z             {
2026-06-21T03:31:34.8145636Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8145745Z               "line": 427
2026-06-21T03:31:34.8145856Z             },
2026-06-21T03:31:34.8145965Z             {
2026-06-21T03:31:34.8146127Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8146914Z               "line": 438
2026-06-21T03:31:34.8147019Z             },
2026-06-21T03:31:34.8147125Z             {
2026-06-21T03:31:34.8147280Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8147396Z               "line": 449
2026-06-21T03:31:34.8147511Z             },
2026-06-21T03:31:34.8147619Z             {
2026-06-21T03:31:34.8147776Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8147886Z               "line": 460
2026-06-21T03:31:34.8147990Z             },
2026-06-21T03:31:34.8148096Z             {
2026-06-21T03:31:34.8148253Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8148362Z               "line": 496
2026-06-21T03:31:34.8148468Z             },
2026-06-21T03:31:34.8148568Z             {
2026-06-21T03:31:34.8148721Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8148830Z               "line": 519
2026-06-21T03:31:34.8149036Z             },
2026-06-21T03:31:34.8149126Z             {
2026-06-21T03:31:34.8149282Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8149403Z               "line": 546
2026-06-21T03:31:34.8149506Z             }
2026-06-21T03:31:34.8149602Z           ]
2026-06-21T03:31:34.8149708Z         }
2026-06-21T03:31:34.8149807Z       }
2026-06-21T03:31:34.8149916Z     },
2026-06-21T03:31:34.8150016Z     {
2026-06-21T03:31:34.8150129Z       "id": "REQ-MESH-2",
2026-06-21T03:31:34.8152697Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T03:31:34.8152845Z       "requiredStages": [
2026-06-21T03:31:34.8152945Z         "impl",
2026-06-21T03:31:34.8153052Z         "unit",
2026-06-21T03:31:34.8153152Z         "int"
2026-06-21T03:31:34.8153258Z       ],
2026-06-21T03:31:34.8153367Z       "stages": {
2026-06-21T03:31:34.8153471Z         "doc": {
2026-06-21T03:31:34.8153592Z           "complete": false,
2026-06-21T03:31:34.8153705Z           "evidence": []
2026-06-21T03:31:34.8153806Z         },
2026-06-21T03:31:34.8153915Z         "impl": {
2026-06-21T03:31:34.8154024Z           "complete": true,
2026-06-21T03:31:34.8154135Z           "evidence": [
2026-06-21T03:31:34.8154240Z             {
2026-06-21T03:31:34.8154392Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8154503Z               "line": 757
2026-06-21T03:31:34.8154611Z             },
2026-06-21T03:31:34.8154717Z             {
2026-06-21T03:31:34.8154874Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8155118Z               "line": 118
2026-06-21T03:31:34.8155213Z             },
2026-06-21T03:31:34.8155312Z             {
2026-06-21T03:31:34.8155450Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8155558Z               "line": 347
2026-06-21T03:31:34.8155662Z             },
2026-06-21T03:31:34.8155757Z             {
2026-06-21T03:31:34.8155919Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8156024Z               "line": 389
2026-06-21T03:31:34.8156130Z             },
2026-06-21T03:31:34.8156230Z             {
2026-06-21T03:31:34.8156377Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8156596Z               "line": 403
2026-06-21T03:31:34.8156702Z             },
2026-06-21T03:31:34.8156811Z             {
2026-06-21T03:31:34.8156954Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8157056Z               "line": 492
2026-06-21T03:31:34.8157164Z             },
2026-06-21T03:31:34.8157274Z             {
2026-06-21T03:31:34.8157413Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8157521Z               "line": 507
2026-06-21T03:31:34.8157637Z             },
2026-06-21T03:31:34.8157737Z             {
2026-06-21T03:31:34.8157884Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8157995Z               "line": 534
2026-06-21T03:31:34.8158103Z             },
2026-06-21T03:31:34.8158212Z             {
2026-06-21T03:31:34.8158370Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8158494Z               "line": 207
2026-06-21T03:31:34.8158603Z             },
2026-06-21T03:31:34.8158714Z             {
2026-06-21T03:31:34.8158860Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8159042Z               "line": 755
2026-06-21T03:31:34.8159142Z             },
2026-06-21T03:31:34.8159247Z             {
2026-06-21T03:31:34.8159438Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8159537Z               "line": 816
2026-06-21T03:31:34.8159648Z             },
2026-06-21T03:31:34.8159747Z             {
2026-06-21T03:31:34.8159906Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8160010Z               "line": 869
2026-06-21T03:31:34.8160105Z             },
2026-06-21T03:31:34.8160205Z             {
2026-06-21T03:31:34.8160357Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8160476Z               "line": 891
2026-06-21T03:31:34.8160581Z             },
2026-06-21T03:31:34.8160684Z             {
2026-06-21T03:31:34.8160840Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8160951Z               "line": 122
2026-06-21T03:31:34.8161051Z             },
2026-06-21T03:31:34.8161155Z             {
2026-06-21T03:31:34.8161303Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8161417Z               "line": 44
2026-06-21T03:31:34.8161528Z             },
2026-06-21T03:31:34.8161647Z             {
2026-06-21T03:31:34.8161785Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8161895Z               "line": 184
2026-06-21T03:31:34.8161990Z             },
2026-06-21T03:31:34.8162095Z             {
2026-06-21T03:31:34.8162234Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8162338Z               "line": 211
2026-06-21T03:31:34.8162448Z             },
2026-06-21T03:31:34.8162544Z             {
2026-06-21T03:31:34.8162690Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8162797Z               "line": 251
2026-06-21T03:31:34.8162906Z             },
2026-06-21T03:31:34.8163010Z             {
2026-06-21T03:31:34.8163140Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8163249Z               "line": 275
2026-06-21T03:31:34.8163357Z             },
2026-06-21T03:31:34.8163467Z             {
2026-06-21T03:31:34.8163702Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8163809Z               "line": 289
2026-06-21T03:31:34.8163922Z             },
2026-06-21T03:31:34.8164017Z             {
2026-06-21T03:31:34.8164152Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8164251Z               "line": 300
2026-06-21T03:31:34.8164356Z             },
2026-06-21T03:31:34.8164462Z             {
2026-06-21T03:31:34.8164594Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8164710Z               "line": 313
2026-06-21T03:31:34.8164800Z             }
2026-06-21T03:31:34.8164909Z           ]
2026-06-21T03:31:34.8165010Z         },
2026-06-21T03:31:34.8165219Z         "int": {
2026-06-21T03:31:34.8165335Z           "complete": true,
2026-06-21T03:31:34.8165453Z           "evidence": [
2026-06-21T03:31:34.8165563Z             {
2026-06-21T03:31:34.8165702Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T03:31:34.8165810Z               "line": 116
2026-06-21T03:31:34.8165919Z             },
2026-06-21T03:31:34.8166043Z             {
2026-06-21T03:31:34.8166208Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T03:31:34.8166332Z               "line": 181
2026-06-21T03:31:34.8166438Z             }
2026-06-21T03:31:34.8166541Z           ]
2026-06-21T03:31:34.8166647Z         },
2026-06-21T03:31:34.8166757Z         "unit": {
2026-06-21T03:31:34.8166875Z           "complete": true,
2026-06-21T03:31:34.8166986Z           "evidence": [
2026-06-21T03:31:34.8167100Z             {
2026-06-21T03:31:34.8167253Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8167357Z               "line": 999
2026-06-21T03:31:34.8167471Z             },
2026-06-21T03:31:34.8167577Z             {
2026-06-21T03:31:34.8167729Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8167843Z               "line": 1016
2026-06-21T03:31:34.8167959Z             },
2026-06-21T03:31:34.8168067Z             {
2026-06-21T03:31:34.8168207Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8168325Z               "line": 1024
2026-06-21T03:31:34.8168430Z             },
2026-06-21T03:31:34.8168540Z             {
2026-06-21T03:31:34.8168682Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8168805Z               "line": 1048
2026-06-21T03:31:34.8168906Z             },
2026-06-21T03:31:34.8169115Z             {
2026-06-21T03:31:34.8169278Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8169397Z               "line": 1499
2026-06-21T03:31:34.8169502Z             },
2026-06-21T03:31:34.8169621Z             {
2026-06-21T03:31:34.8169763Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8169870Z               "line": 347
2026-06-21T03:31:34.8169974Z             },
2026-06-21T03:31:34.8170097Z             {
2026-06-21T03:31:34.8170241Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8170350Z               "line": 370
2026-06-21T03:31:34.8170461Z             },
2026-06-21T03:31:34.8170556Z             {
2026-06-21T03:31:34.8170699Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8170795Z               "line": 407
2026-06-21T03:31:34.8170903Z             },
2026-06-21T03:31:34.8171007Z             {
2026-06-21T03:31:34.8171155Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8171272Z               "line": 431
2026-06-21T03:31:34.8171367Z             },
2026-06-21T03:31:34.8171482Z             {
2026-06-21T03:31:34.8171616Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8171734Z               "line": 483
2026-06-21T03:31:34.8171836Z             },
2026-06-21T03:31:34.8171949Z             {
2026-06-21T03:31:34.8172084Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8172188Z               "line": 499
2026-06-21T03:31:34.8172297Z             },
2026-06-21T03:31:34.8172507Z             {
2026-06-21T03:31:34.8172655Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8172765Z               "line": 514
2026-06-21T03:31:34.8172875Z             },
2026-06-21T03:31:34.8172979Z             {
2026-06-21T03:31:34.8173113Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8173228Z               "line": 531
2026-06-21T03:31:34.8173333Z             }
2026-06-21T03:31:34.8173438Z           ]
2026-06-21T03:31:34.8173532Z         }
2026-06-21T03:31:34.8173638Z       }
2026-06-21T03:31:34.8173743Z     },
2026-06-21T03:31:34.8173846Z     {
2026-06-21T03:31:34.8173960Z       "id": "REQ-MESH-3",
2026-06-21T03:31:34.8175808Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T03:31:34.8175952Z       "requiredStages": [
2026-06-21T03:31:34.8176051Z         "impl",
2026-06-21T03:31:34.8176161Z         "unit",
2026-06-21T03:31:34.8176267Z         "int"
2026-06-21T03:31:34.8176370Z       ],
2026-06-21T03:31:34.8176484Z       "stages": {
2026-06-21T03:31:34.8176594Z         "doc": {
2026-06-21T03:31:34.8176715Z           "complete": false,
2026-06-21T03:31:34.8176834Z           "evidence": []
2026-06-21T03:31:34.8176945Z         },
2026-06-21T03:31:34.8177059Z         "impl": {
2026-06-21T03:31:34.8177173Z           "complete": true,
2026-06-21T03:31:34.8177288Z           "evidence": [
2026-06-21T03:31:34.8177397Z             {
2026-06-21T03:31:34.8177541Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.8177665Z               "line": 641
2026-06-21T03:31:34.8177764Z             }
2026-06-21T03:31:34.8177875Z           ]
2026-06-21T03:31:34.8177979Z         },
2026-06-21T03:31:34.8178079Z         "int": {
2026-06-21T03:31:34.8178200Z           "complete": true,
2026-06-21T03:31:34.8178304Z           "evidence": [
2026-06-21T03:31:34.8178418Z             {
2026-06-21T03:31:34.8178557Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T03:31:34.8178661Z               "line": 373
2026-06-21T03:31:34.8178767Z             },
2026-06-21T03:31:34.8178876Z             {
2026-06-21T03:31:34.8179110Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T03:31:34.8179224Z               "line": 436
2026-06-21T03:31:34.8179332Z             }
2026-06-21T03:31:34.8179442Z           ]
2026-06-21T03:31:34.8179557Z         },
2026-06-21T03:31:34.8179661Z         "unit": {
2026-06-21T03:31:34.8179771Z           "complete": true,
2026-06-21T03:31:34.8179877Z           "evidence": [
2026-06-21T03:31:34.8179985Z             {
2026-06-21T03:31:34.8180134Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.8180243Z               "line": 910
2026-06-21T03:31:34.8180358Z             }
2026-06-21T03:31:34.8180449Z           ]
2026-06-21T03:31:34.8180558Z         }
2026-06-21T03:31:34.8180667Z       }
2026-06-21T03:31:34.8180764Z     },
2026-06-21T03:31:34.8180873Z     {
2026-06-21T03:31:34.8180977Z       "id": "REQ-MESH-4",
2026-06-21T03:31:34.8183220Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T03:31:34.8183473Z       "requiredStages": [
2026-06-21T03:31:34.8183578Z         "impl",
2026-06-21T03:31:34.8183687Z         "unit",
2026-06-21T03:31:34.8183797Z         "int"
2026-06-21T03:31:34.8183908Z       ],
2026-06-21T03:31:34.8184016Z       "stages": {
2026-06-21T03:31:34.8184121Z         "doc": {
2026-06-21T03:31:34.8184247Z           "complete": false,
2026-06-21T03:31:34.8184355Z           "evidence": []
2026-06-21T03:31:34.8184578Z         },
2026-06-21T03:31:34.8184676Z         "impl": {
2026-06-21T03:31:34.8184794Z           "complete": true,
2026-06-21T03:31:34.8184909Z           "evidence": [
2026-06-21T03:31:34.8185019Z             {
2026-06-21T03:31:34.8185186Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.8185300Z               "line": 33
2026-06-21T03:31:34.8185414Z             },
2026-06-21T03:31:34.8185521Z             {
2026-06-21T03:31:34.8185677Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8185787Z               "line": 68
2026-06-21T03:31:34.8185887Z             },
2026-06-21T03:31:34.8185987Z             {
2026-06-21T03:31:34.8186135Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8186259Z               "line": 111
2026-06-21T03:31:34.8186373Z             },
2026-06-21T03:31:34.8186484Z             {
2026-06-21T03:31:34.8186639Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8186755Z               "line": 462
2026-06-21T03:31:34.8186865Z             },
2026-06-21T03:31:34.8186968Z             {
2026-06-21T03:31:34.8187121Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8187234Z               "line": 711
2026-06-21T03:31:34.8187342Z             },
2026-06-21T03:31:34.8187452Z             {
2026-06-21T03:31:34.8187600Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8187704Z               "line": 725
2026-06-21T03:31:34.8187806Z             },
2026-06-21T03:31:34.8187915Z             {
2026-06-21T03:31:34.8188053Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8188168Z               "line": 132
2026-06-21T03:31:34.8188272Z             },
2026-06-21T03:31:34.8188373Z             {
2026-06-21T03:31:34.8188525Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8188639Z               "line": 26
2026-06-21T03:31:34.8188750Z             },
2026-06-21T03:31:34.8188859Z             {
2026-06-21T03:31:34.8189084Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8189197Z               "line": 97
2026-06-21T03:31:34.8189298Z             },
2026-06-21T03:31:34.8189413Z             {
2026-06-21T03:31:34.8189550Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8189671Z               "line": 119
2026-06-21T03:31:34.8189779Z             },
2026-06-21T03:31:34.8189883Z             {
2026-06-21T03:31:34.8190031Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8190141Z               "line": 82
2026-06-21T03:31:34.8190250Z             },
2026-06-21T03:31:34.8190351Z             {
2026-06-21T03:31:34.8190488Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8190603Z               "line": 111
2026-06-21T03:31:34.8190713Z             },
2026-06-21T03:31:34.8190822Z             {
2026-06-21T03:31:34.8190961Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8191080Z               "line": 232
2026-06-21T03:31:34.8191184Z             },
2026-06-21T03:31:34.8191300Z             {
2026-06-21T03:31:34.8191438Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8191552Z               "line": 245
2026-06-21T03:31:34.8191658Z             },
2026-06-21T03:31:34.8191862Z             {
2026-06-21T03:31:34.8191996Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8192104Z               "line": 4665
2026-06-21T03:31:34.8192209Z             }
2026-06-21T03:31:34.8192322Z           ]
2026-06-21T03:31:34.8192426Z         },
2026-06-21T03:31:34.8192540Z         "int": {
2026-06-21T03:31:34.8192656Z           "complete": true,
2026-06-21T03:31:34.8192764Z           "evidence": [
2026-06-21T03:31:34.8192864Z             {
2026-06-21T03:31:34.8193017Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T03:31:34.8193126Z               "line": 98
2026-06-21T03:31:34.8193232Z             },
2026-06-21T03:31:34.8193436Z             {
2026-06-21T03:31:34.8193585Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T03:31:34.8193689Z               "line": 140
2026-06-21T03:31:34.8193799Z             }
2026-06-21T03:31:34.8193909Z           ]
2026-06-21T03:31:34.8194018Z         },
2026-06-21T03:31:34.8194129Z         "unit": {
2026-06-21T03:31:34.8194243Z           "complete": true,
2026-06-21T03:31:34.8194352Z           "evidence": [
2026-06-21T03:31:34.8194463Z             {
2026-06-21T03:31:34.8194619Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.8194734Z               "line": 178
2026-06-21T03:31:34.8194840Z             },
2026-06-21T03:31:34.8194943Z             {
2026-06-21T03:31:34.8195109Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.8195218Z               "line": 242
2026-06-21T03:31:34.8195317Z             },
2026-06-21T03:31:34.8195422Z             {
2026-06-21T03:31:34.8195575Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8195678Z               "line": 1079
2026-06-21T03:31:34.8195780Z             },
2026-06-21T03:31:34.8195885Z             {
2026-06-21T03:31:34.8196032Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8196147Z               "line": 1109
2026-06-21T03:31:34.8196251Z             },
2026-06-21T03:31:34.8196366Z             {
2026-06-21T03:31:34.8196523Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:31:34.8196637Z               "line": 1129
2026-06-21T03:31:34.8196753Z             },
2026-06-21T03:31:34.8196857Z             {
2026-06-21T03:31:34.8197020Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:31:34.8197143Z               "line": 602
2026-06-21T03:31:34.8197244Z             },
2026-06-21T03:31:34.8197359Z             {
2026-06-21T03:31:34.8197500Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8197614Z               "line": 148
2026-06-21T03:31:34.8197723Z             },
2026-06-21T03:31:34.8197827Z             {
2026-06-21T03:31:34.8197974Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8198089Z               "line": 169
2026-06-21T03:31:34.8198198Z             },
2026-06-21T03:31:34.8198303Z             {
2026-06-21T03:31:34.8198447Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8198565Z               "line": 181
2026-06-21T03:31:34.8198676Z             },
2026-06-21T03:31:34.8198785Z             {
2026-06-21T03:31:34.8198928Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:31:34.8199124Z               "line": 202
2026-06-21T03:31:34.8199228Z             },
2026-06-21T03:31:34.8199348Z             {
2026-06-21T03:31:34.8199485Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8199601Z               "line": 375
2026-06-21T03:31:34.8199715Z             },
2026-06-21T03:31:34.8199819Z             {
2026-06-21T03:31:34.8199969Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8200081Z               "line": 407
2026-06-21T03:31:34.8200197Z             },
2026-06-21T03:31:34.8200302Z             {
2026-06-21T03:31:34.8200438Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8200558Z               "line": 10052
2026-06-21T03:31:34.8200767Z             }
2026-06-21T03:31:34.8200877Z           ]
2026-06-21T03:31:34.8200977Z         }
2026-06-21T03:31:34.8201086Z       }
2026-06-21T03:31:34.8201188Z     },
2026-06-21T03:31:34.8201297Z     {
2026-06-21T03:31:34.8201420Z       "id": "REQ-MESH-5",
2026-06-21T03:31:34.8202860Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T03:31:34.8203086Z       "requiredStages": [
2026-06-21T03:31:34.8203201Z         "impl",
2026-06-21T03:31:34.8203305Z         "unit"
2026-06-21T03:31:34.8203415Z       ],
2026-06-21T03:31:34.8203525Z       "stages": {
2026-06-21T03:31:34.8203639Z         "doc": {
2026-06-21T03:31:34.8203749Z           "complete": false,
2026-06-21T03:31:34.8203873Z           "evidence": []
2026-06-21T03:31:34.8203973Z         },
2026-06-21T03:31:34.8204084Z         "impl": {
2026-06-21T03:31:34.8204197Z           "complete": true,
2026-06-21T03:31:34.8204311Z           "evidence": [
2026-06-21T03:31:34.8204422Z             {
2026-06-21T03:31:34.8204569Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8204679Z               "line": 61
2026-06-21T03:31:34.8204784Z             },
2026-06-21T03:31:34.8204893Z             {
2026-06-21T03:31:34.8205052Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8205169Z               "line": 109
2026-06-21T03:31:34.8205275Z             },
2026-06-21T03:31:34.8205372Z             {
2026-06-21T03:31:34.8205527Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8205636Z               "line": 104
2026-06-21T03:31:34.8205741Z             },
2026-06-21T03:31:34.8205853Z             {
2026-06-21T03:31:34.8206001Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.8206125Z               "line": 105
2026-06-21T03:31:34.8206215Z             },
2026-06-21T03:31:34.8206331Z             {
2026-06-21T03:31:34.8206496Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8206616Z               "line": 85
2026-06-21T03:31:34.8206721Z             },
2026-06-21T03:31:34.8206821Z             {
2026-06-21T03:31:34.8206975Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8207083Z               "line": 250
2026-06-21T03:31:34.8207193Z             },
2026-06-21T03:31:34.8207299Z             {
2026-06-21T03:31:34.8207455Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8207566Z               "line": 314
2026-06-21T03:31:34.8207671Z             },
2026-06-21T03:31:34.8207779Z             {
2026-06-21T03:31:34.8207919Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8208032Z               "line": 767
2026-06-21T03:31:34.8208141Z             },
2026-06-21T03:31:34.8208246Z             {
2026-06-21T03:31:34.8208377Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.8208486Z               "line": 101
2026-06-21T03:31:34.8208587Z             },
2026-06-21T03:31:34.8208688Z             {
2026-06-21T03:31:34.8208835Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8209026Z               "line": 193
2026-06-21T03:31:34.8209120Z             }
2026-06-21T03:31:34.8209221Z           ]
2026-06-21T03:31:34.8209316Z         },
2026-06-21T03:31:34.8209454Z         "int": {
2026-06-21T03:31:34.8209560Z           "complete": false,
2026-06-21T03:31:34.8209674Z           "evidence": []
2026-06-21T03:31:34.8209784Z         },
2026-06-21T03:31:34.8209889Z         "unit": {
2026-06-21T03:31:34.8210008Z           "complete": true,
2026-06-21T03:31:34.8210113Z           "evidence": [
2026-06-21T03:31:34.8210327Z             {
2026-06-21T03:31:34.8210476Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8210589Z               "line": 1009
2026-06-21T03:31:34.8210690Z             },
2026-06-21T03:31:34.8210796Z             {
2026-06-21T03:31:34.8210942Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:31:34.8211051Z               "line": 462
2026-06-21T03:31:34.8211151Z             }
2026-06-21T03:31:34.8211252Z           ]
2026-06-21T03:31:34.8211360Z         }
2026-06-21T03:31:34.8211461Z       }
2026-06-21T03:31:34.8211562Z     },
2026-06-21T03:31:34.8211665Z     {
2026-06-21T03:31:34.8211871Z       "id": "REQ-MESH-6",
2026-06-21T03:31:34.8213140Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T03:31:34.8213272Z       "requiredStages": [
2026-06-21T03:31:34.8213377Z         "impl",
2026-06-21T03:31:34.8213485Z         "unit"
2026-06-21T03:31:34.8213589Z       ],
2026-06-21T03:31:34.8213699Z       "stages": {
2026-06-21T03:31:34.8213805Z         "doc": {
2026-06-21T03:31:34.8213923Z           "complete": false,
2026-06-21T03:31:34.8214033Z           "evidence": []
2026-06-21T03:31:34.8214138Z         },
2026-06-21T03:31:34.8214251Z         "impl": {
2026-06-21T03:31:34.8214367Z           "complete": true,
2026-06-21T03:31:34.8214485Z           "evidence": [
2026-06-21T03:31:34.8214580Z             {
2026-06-21T03:31:34.8214719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8214833Z               "line": 4181
2026-06-21T03:31:34.8214934Z             }
2026-06-21T03:31:34.8219409Z           ]
2026-06-21T03:31:34.8219562Z         },
2026-06-21T03:31:34.8219695Z         "int": {
2026-06-21T03:31:34.8219815Z           "complete": false,
2026-06-21T03:31:34.8219934Z           "evidence": []
2026-06-21T03:31:34.8220048Z         },
2026-06-21T03:31:34.8220148Z         "unit": {
2026-06-21T03:31:34.8220272Z           "complete": true,
2026-06-21T03:31:34.8220387Z           "evidence": [
2026-06-21T03:31:34.8220492Z             {
2026-06-21T03:31:34.8220634Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8220755Z               "line": 10602
2026-06-21T03:31:34.8220868Z             },
2026-06-21T03:31:34.8220973Z             {
2026-06-21T03:31:34.8221112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8221226Z               "line": 10629
2026-06-21T03:31:34.8221332Z             },
2026-06-21T03:31:34.8221436Z             {
2026-06-21T03:31:34.8221573Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8221683Z               "line": 10653
2026-06-21T03:31:34.8221789Z             }
2026-06-21T03:31:34.8221906Z           ]
2026-06-21T03:31:34.8221998Z         }
2026-06-21T03:31:34.8222102Z       }
2026-06-21T03:31:34.8222193Z     },
2026-06-21T03:31:34.8222303Z     {
2026-06-21T03:31:34.8222427Z       "id": "REQ-MIGRATE-1",
2026-06-21T03:31:34.8222627Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T03:31:34.8222755Z       "requiredStages": [],
2026-06-21T03:31:34.8222864Z       "stages": {
2026-06-21T03:31:34.8222980Z         "doc": {
2026-06-21T03:31:34.8223089Z           "complete": false,
2026-06-21T03:31:34.8223203Z           "evidence": []
2026-06-21T03:31:34.8223309Z         },
2026-06-21T03:31:34.8223418Z         "impl": {
2026-06-21T03:31:34.8223543Z           "complete": false,
2026-06-21T03:31:34.8223648Z           "evidence": []
2026-06-21T03:31:34.8223756Z         },
2026-06-21T03:31:34.8223865Z         "int": {
2026-06-21T03:31:34.8223985Z           "complete": false,
2026-06-21T03:31:34.8224101Z           "evidence": []
2026-06-21T03:31:34.8224365Z         },
2026-06-21T03:31:34.8224468Z         "unit": {
2026-06-21T03:31:34.8224583Z           "complete": false,
2026-06-21T03:31:34.8224703Z           "evidence": []
2026-06-21T03:31:34.8224807Z         }
2026-06-21T03:31:34.8224908Z       }
2026-06-21T03:31:34.8225008Z     },
2026-06-21T03:31:34.8225112Z     {
2026-06-21T03:31:34.8225228Z       "id": "REQ-MSG-1",
2026-06-21T03:31:34.8225713Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T03:31:34.8225843Z       "requiredStages": [
2026-06-21T03:31:34.8225951Z         "impl",
2026-06-21T03:31:34.8226191Z         "unit",
2026-06-21T03:31:34.8226318Z         "int"
2026-06-21T03:31:34.8226439Z       ],
2026-06-21T03:31:34.8226554Z       "stages": {
2026-06-21T03:31:34.8226666Z         "doc": {
2026-06-21T03:31:34.8226785Z           "complete": false,
2026-06-21T03:31:34.8226899Z           "evidence": []
2026-06-21T03:31:34.8227016Z         },
2026-06-21T03:31:34.8227126Z         "impl": {
2026-06-21T03:31:34.8227237Z           "complete": true,
2026-06-21T03:31:34.8227350Z           "evidence": [
2026-06-21T03:31:34.8227456Z             {
2026-06-21T03:31:34.8227603Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8227707Z               "line": 28
2026-06-21T03:31:34.8227823Z             },
2026-06-21T03:31:34.8227936Z             {
2026-06-21T03:31:34.8228075Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8228189Z               "line": 94
2026-06-21T03:31:34.8228294Z             },
2026-06-21T03:31:34.8228400Z             {
2026-06-21T03:31:34.8228546Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8228661Z               "line": 127
2026-06-21T03:31:34.8228772Z             },
2026-06-21T03:31:34.8228875Z             {
2026-06-21T03:31:34.8229096Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8229209Z               "line": 149
2026-06-21T03:31:34.8229313Z             },
2026-06-21T03:31:34.8229437Z             {
2026-06-21T03:31:34.8229578Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8229693Z               "line": 174
2026-06-21T03:31:34.8229798Z             },
2026-06-21T03:31:34.8229902Z             {
2026-06-21T03:31:34.8230037Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8230151Z               "line": 18
2026-06-21T03:31:34.8230260Z             },
2026-06-21T03:31:34.8230365Z             {
2026-06-21T03:31:34.8230512Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.8230623Z               "line": 13
2026-06-21T03:31:34.8230732Z             },
2026-06-21T03:31:34.8230837Z             {
2026-06-21T03:31:34.8230982Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.8231090Z               "line": 62
2026-06-21T03:31:34.8231195Z             },
2026-06-21T03:31:34.8231306Z             {
2026-06-21T03:31:34.8231442Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8231548Z               "line": 13
2026-06-21T03:31:34.8231653Z             }
2026-06-21T03:31:34.8231762Z           ]
2026-06-21T03:31:34.8231873Z         },
2026-06-21T03:31:34.8231978Z         "int": {
2026-06-21T03:31:34.8232086Z           "complete": true,
2026-06-21T03:31:34.8232195Z           "evidence": [
2026-06-21T03:31:34.8232301Z             {
2026-06-21T03:31:34.8232471Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:31:34.8232582Z               "line": 9
2026-06-21T03:31:34.8232682Z             },
2026-06-21T03:31:34.8232790Z             {
2026-06-21T03:31:34.8232958Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:31:34.8233063Z               "line": 56
2026-06-21T03:31:34.8233172Z             },
2026-06-21T03:31:34.8233278Z             {
2026-06-21T03:31:34.8233429Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:31:34.8233645Z               "line": 113
2026-06-21T03:31:34.8233749Z             }
2026-06-21T03:31:34.8233860Z           ]
2026-06-21T03:31:34.8233955Z         },
2026-06-21T03:31:34.8234073Z         "unit": {
2026-06-21T03:31:34.8234184Z           "complete": true,
2026-06-21T03:31:34.8234298Z           "evidence": [
2026-06-21T03:31:34.8234407Z             {
2026-06-21T03:31:34.8234540Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8234657Z               "line": 203
2026-06-21T03:31:34.8234756Z             },
2026-06-21T03:31:34.8234868Z             {
2026-06-21T03:31:34.8235004Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8235206Z               "line": 232
2026-06-21T03:31:34.8235319Z             },
2026-06-21T03:31:34.8235420Z             {
2026-06-21T03:31:34.8235558Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8235667Z               "line": 277
2026-06-21T03:31:34.8235783Z             },
2026-06-21T03:31:34.8235892Z             {
2026-06-21T03:31:34.8236035Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8236150Z               "line": 300
2026-06-21T03:31:34.8236254Z             },
2026-06-21T03:31:34.8236359Z             {
2026-06-21T03:31:34.8236498Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:31:34.8236616Z               "line": 325
2026-06-21T03:31:34.8236718Z             },
2026-06-21T03:31:34.8236817Z             {
2026-06-21T03:31:34.8236965Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8237071Z               "line": 204
2026-06-21T03:31:34.8237183Z             },
2026-06-21T03:31:34.8237288Z             {
2026-06-21T03:31:34.8237435Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8237538Z               "line": 237
2026-06-21T03:31:34.8237648Z             },
2026-06-21T03:31:34.8237744Z             {
2026-06-21T03:31:34.8237876Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8237992Z               "line": 251
2026-06-21T03:31:34.8238096Z             },
2026-06-21T03:31:34.8238210Z             {
2026-06-21T03:31:34.8238350Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8238450Z               "line": 263
2026-06-21T03:31:34.8238563Z             },
2026-06-21T03:31:34.8238660Z             {
2026-06-21T03:31:34.8238798Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.8238902Z               "line": 162
2026-06-21T03:31:34.8239092Z             },
2026-06-21T03:31:34.8239198Z             {
2026-06-21T03:31:34.8239342Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:31:34.8239465Z               "line": 242
2026-06-21T03:31:34.8239566Z             },
2026-06-21T03:31:34.8239675Z             {
2026-06-21T03:31:34.8239807Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8239921Z               "line": 134
2026-06-21T03:31:34.8240030Z             },
2026-06-21T03:31:34.8240133Z             {
2026-06-21T03:31:34.8240272Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8240382Z               "line": 153
2026-06-21T03:31:34.8240495Z             }
2026-06-21T03:31:34.8240597Z           ]
2026-06-21T03:31:34.8240706Z         }
2026-06-21T03:31:34.8240810Z       }
2026-06-21T03:31:34.8240917Z     },
2026-06-21T03:31:34.8241026Z     {
2026-06-21T03:31:34.8241139Z       "id": "REQ-MSG-2",
2026-06-21T03:31:34.8241445Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T03:31:34.8241565Z       "requiredStages": [
2026-06-21T03:31:34.8241679Z         "impl",
2026-06-21T03:31:34.8241778Z         "unit"
2026-06-21T03:31:34.8241880Z       ],
2026-06-21T03:31:34.8241993Z       "stages": {
2026-06-21T03:31:34.8242098Z         "doc": {
2026-06-21T03:31:34.8242209Z           "complete": false,
2026-06-21T03:31:34.8242317Z           "evidence": []
2026-06-21T03:31:34.8242418Z         },
2026-06-21T03:31:34.8242631Z         "impl": {
2026-06-21T03:31:34.8242745Z           "complete": true,
2026-06-21T03:31:34.8242856Z           "evidence": [
2026-06-21T03:31:34.8242946Z             {
2026-06-21T03:31:34.8243084Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8243195Z               "line": 11
2026-06-21T03:31:34.8243308Z             },
2026-06-21T03:31:34.8243413Z             {
2026-06-21T03:31:34.8243542Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:31:34.8243651Z               "line": 8
2026-06-21T03:31:34.8243757Z             }
2026-06-21T03:31:34.8243867Z           ]
2026-06-21T03:31:34.8243971Z         },
2026-06-21T03:31:34.8244082Z         "int": {
2026-06-21T03:31:34.8244300Z           "complete": false,
2026-06-21T03:31:34.8244411Z           "evidence": []
2026-06-21T03:31:34.8244515Z         },
2026-06-21T03:31:34.8244620Z         "unit": {
2026-06-21T03:31:34.8244745Z           "complete": true,
2026-06-21T03:31:34.8244858Z           "evidence": [
2026-06-21T03:31:34.8244971Z             {
2026-06-21T03:31:34.8245105Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8245203Z               "line": 7717
2026-06-21T03:31:34.8245317Z             },
2026-06-21T03:31:34.8245418Z             {
2026-06-21T03:31:34.8245546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8245655Z               "line": 7759
2026-06-21T03:31:34.8245766Z             },
2026-06-21T03:31:34.8245875Z             {
2026-06-21T03:31:34.8246000Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8246118Z               "line": 7808
2026-06-21T03:31:34.8246222Z             },
2026-06-21T03:31:34.8246329Z             {
2026-06-21T03:31:34.8246457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8246576Z               "line": 7831
2026-06-21T03:31:34.8246691Z             },
2026-06-21T03:31:34.8246791Z             {
2026-06-21T03:31:34.8246924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8247034Z               "line": 9807
2026-06-21T03:31:34.8247149Z             },
2026-06-21T03:31:34.8247249Z             {
2026-06-21T03:31:34.8247387Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8247501Z               "line": 9816
2026-06-21T03:31:34.8247603Z             },
2026-06-21T03:31:34.8247716Z             {
2026-06-21T03:31:34.8247843Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8247953Z               "line": 9830
2026-06-21T03:31:34.8248056Z             }
2026-06-21T03:31:34.8248150Z           ]
2026-06-21T03:31:34.8248256Z         }
2026-06-21T03:31:34.8248357Z       }
2026-06-21T03:31:34.8248460Z     },
2026-06-21T03:31:34.8248566Z     {
2026-06-21T03:31:34.8248695Z       "id": "REQ-MSG-3",
2026-06-21T03:31:34.8249191Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T03:31:34.8249310Z       "requiredStages": [
2026-06-21T03:31:34.8249443Z         "impl",
2026-06-21T03:31:34.8249544Z         "unit",
2026-06-21T03:31:34.8249648Z         "int"
2026-06-21T03:31:34.8249753Z       ],
2026-06-21T03:31:34.8249859Z       "stages": {
2026-06-21T03:31:34.8249958Z         "doc": {
2026-06-21T03:31:34.8250077Z           "complete": false,
2026-06-21T03:31:34.8250188Z           "evidence": []
2026-06-21T03:31:34.8250291Z         },
2026-06-21T03:31:34.8250405Z         "impl": {
2026-06-21T03:31:34.8250515Z           "complete": true,
2026-06-21T03:31:34.8250627Z           "evidence": [
2026-06-21T03:31:34.8250731Z             {
2026-06-21T03:31:34.8250885Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:31:34.8250994Z               "line": 19
2026-06-21T03:31:34.8251104Z             },
2026-06-21T03:31:34.8251204Z             {
2026-06-21T03:31:34.8251332Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8251448Z               "line": 21
2026-06-21T03:31:34.8251552Z             },
2026-06-21T03:31:34.8251661Z             {
2026-06-21T03:31:34.8251905Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8252014Z               "line": 48
2026-06-21T03:31:34.8252121Z             },
2026-06-21T03:31:34.8252215Z             {
2026-06-21T03:31:34.8252348Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8252459Z               "line": 174
2026-06-21T03:31:34.8252558Z             }
2026-06-21T03:31:34.8252663Z           ]
2026-06-21T03:31:34.8252765Z         },
2026-06-21T03:31:34.8252872Z         "int": {
2026-06-21T03:31:34.8252973Z           "complete": true,
2026-06-21T03:31:34.8253094Z           "evidence": [
2026-06-21T03:31:34.8253196Z             {
2026-06-21T03:31:34.8253473Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:31:34.8253592Z               "line": 10
2026-06-21T03:31:34.8253683Z             },
2026-06-21T03:31:34.8253788Z             {
2026-06-21T03:31:34.8253939Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:31:34.8254055Z               "line": 56
2026-06-21T03:31:34.8254159Z             }
2026-06-21T03:31:34.8254259Z           ]
2026-06-21T03:31:34.8254365Z         },
2026-06-21T03:31:34.8254465Z         "unit": {
2026-06-21T03:31:34.8254578Z           "complete": true,
2026-06-21T03:31:34.8254680Z           "evidence": [
2026-06-21T03:31:34.8254794Z             {
2026-06-21T03:31:34.8254937Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8255037Z               "line": 228
2026-06-21T03:31:34.8255146Z             },
2026-06-21T03:31:34.8255252Z             {
2026-06-21T03:31:34.8255389Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8255503Z               "line": 247
2026-06-21T03:31:34.8255613Z             },
2026-06-21T03:31:34.8255716Z             {
2026-06-21T03:31:34.8255848Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8255963Z               "line": 270
2026-06-21T03:31:34.8256068Z             }
2026-06-21T03:31:34.8256177Z           ]
2026-06-21T03:31:34.8256288Z         }
2026-06-21T03:31:34.8256397Z       }
2026-06-21T03:31:34.8256492Z     },
2026-06-21T03:31:34.8256593Z     {
2026-06-21T03:31:34.8256712Z       "id": "REQ-MSG-4",
2026-06-21T03:31:34.8257651Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T03:31:34.8257780Z       "requiredStages": [
2026-06-21T03:31:34.8257881Z         "impl",
2026-06-21T03:31:34.8257999Z         "unit",
2026-06-21T03:31:34.8258110Z         "int"
2026-06-21T03:31:34.8258220Z       ],
2026-06-21T03:31:34.8258332Z       "stages": {
2026-06-21T03:31:34.8258432Z         "doc": {
2026-06-21T03:31:34.8258546Z           "complete": false,
2026-06-21T03:31:34.8258659Z           "evidence": []
2026-06-21T03:31:34.8258763Z         },
2026-06-21T03:31:34.8258879Z         "impl": {
2026-06-21T03:31:34.8259083Z           "complete": true,
2026-06-21T03:31:34.8259203Z           "evidence": [
2026-06-21T03:31:34.8259307Z             {
2026-06-21T03:31:34.8259484Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8259598Z               "line": 19
2026-06-21T03:31:34.8259713Z             },
2026-06-21T03:31:34.8259823Z             {
2026-06-21T03:31:34.8259956Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8260071Z               "line": 46
2026-06-21T03:31:34.8260180Z             },
2026-06-21T03:31:34.8260285Z             {
2026-06-21T03:31:34.8260419Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8260542Z               "line": 532
2026-06-21T03:31:34.8260652Z             },
2026-06-21T03:31:34.8260753Z             {
2026-06-21T03:31:34.8260889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8260998Z               "line": 3110
2026-06-21T03:31:34.8261104Z             }
2026-06-21T03:31:34.8261335Z           ]
2026-06-21T03:31:34.8261450Z         },
2026-06-21T03:31:34.8261558Z         "int": {
2026-06-21T03:31:34.8261664Z           "complete": true,
2026-06-21T03:31:34.8261778Z           "evidence": [
2026-06-21T03:31:34.8261878Z             {
2026-06-21T03:31:34.8262037Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:31:34.8262146Z               "line": 98
2026-06-21T03:31:34.8262255Z             },
2026-06-21T03:31:34.8262361Z             {
2026-06-21T03:31:34.8262508Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:31:34.8262613Z               "line": 128
2026-06-21T03:31:34.8262718Z             }
2026-06-21T03:31:34.8262928Z           ]
2026-06-21T03:31:34.8263029Z         },
2026-06-21T03:31:34.8263123Z         "unit": {
2026-06-21T03:31:34.8263248Z           "complete": true,
2026-06-21T03:31:34.8263358Z           "evidence": [
2026-06-21T03:31:34.8263457Z             {
2026-06-21T03:31:34.8263587Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8263700Z               "line": 68
2026-06-21T03:31:34.8263814Z             },
2026-06-21T03:31:34.8263918Z             {
2026-06-21T03:31:34.8264048Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8264157Z               "line": 79
2026-06-21T03:31:34.8264267Z             },
2026-06-21T03:31:34.8264363Z             {
2026-06-21T03:31:34.8264499Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8264611Z               "line": 90
2026-06-21T03:31:34.8264715Z             },
2026-06-21T03:31:34.8264819Z             {
2026-06-21T03:31:34.8264953Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8265067Z               "line": 151
2026-06-21T03:31:34.8265173Z             }
2026-06-21T03:31:34.8265282Z           ]
2026-06-21T03:31:34.8265391Z         }
2026-06-21T03:31:34.8265502Z       }
2026-06-21T03:31:34.8265611Z     },
2026-06-21T03:31:34.8265706Z     {
2026-06-21T03:31:34.8265817Z       "id": "REQ-MSG-5",
2026-06-21T03:31:34.8266586Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T03:31:34.8266713Z       "requiredStages": [
2026-06-21T03:31:34.8266824Z         "doc",
2026-06-21T03:31:34.8266929Z         "impl",
2026-06-21T03:31:34.8267038Z         "unit"
2026-06-21T03:31:34.8267140Z       ],
2026-06-21T03:31:34.8267248Z       "stages": {
2026-06-21T03:31:34.8267353Z         "doc": {
2026-06-21T03:31:34.8267473Z           "complete": true,
2026-06-21T03:31:34.8267596Z           "evidence": [
2026-06-21T03:31:34.8267701Z             {
2026-06-21T03:31:34.8267816Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8267925Z               "line": 231
2026-06-21T03:31:34.8268040Z             }
2026-06-21T03:31:34.8268140Z           ]
2026-06-21T03:31:34.8268254Z         },
2026-06-21T03:31:34.8268374Z         "impl": {
2026-06-21T03:31:34.8268483Z           "complete": true,
2026-06-21T03:31:34.8268598Z           "evidence": [
2026-06-21T03:31:34.8268708Z             {
2026-06-21T03:31:34.8268854Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.8269050Z               "line": 60
2026-06-21T03:31:34.8269157Z             },
2026-06-21T03:31:34.8269280Z             {
2026-06-21T03:31:34.8269425Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8269543Z               "line": 126
2026-06-21T03:31:34.8269643Z             },
2026-06-21T03:31:34.8269749Z             {
2026-06-21T03:31:34.8269895Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8270011Z               "line": 135
2026-06-21T03:31:34.8270120Z             },
2026-06-21T03:31:34.8270229Z             {
2026-06-21T03:31:34.8270378Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8270487Z               "line": 149
2026-06-21T03:31:34.8270707Z             },
2026-06-21T03:31:34.8270801Z             {
2026-06-21T03:31:34.8270936Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8271050Z               "line": 178
2026-06-21T03:31:34.8271155Z             },
2026-06-21T03:31:34.8271261Z             {
2026-06-21T03:31:34.8271389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8271516Z               "line": 2802
2026-06-21T03:31:34.8271625Z             }
2026-06-21T03:31:34.8271734Z           ]
2026-06-21T03:31:34.8271837Z         },
2026-06-21T03:31:34.8271938Z         "int": {
2026-06-21T03:31:34.8272053Z           "complete": true,
2026-06-21T03:31:34.8272253Z           "evidence": [
2026-06-21T03:31:34.8272373Z             {
2026-06-21T03:31:34.8272519Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T03:31:34.8272630Z               "line": 19
2026-06-21T03:31:34.8272767Z             }
2026-06-21T03:31:34.8272869Z           ]
2026-06-21T03:31:34.8272978Z         },
2026-06-21T03:31:34.8273091Z         "unit": {
2026-06-21T03:31:34.8273212Z           "complete": true,
2026-06-21T03:31:34.8273335Z           "evidence": [
2026-06-21T03:31:34.8273435Z             {
2026-06-21T03:31:34.8273579Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.8273693Z               "line": 192
2026-06-21T03:31:34.8273798Z             },
2026-06-21T03:31:34.8273904Z             {
2026-06-21T03:31:34.8274046Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:31:34.8274157Z               "line": 154
2026-06-21T03:31:34.8274261Z             },
2026-06-21T03:31:34.8274364Z             {
2026-06-21T03:31:34.8274498Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8274618Z               "line": 122
2026-06-21T03:31:34.8274721Z             },
2026-06-21T03:31:34.8274822Z             {
2026-06-21T03:31:34.8274965Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8275069Z               "line": 452
2026-06-21T03:31:34.8275176Z             },
2026-06-21T03:31:34.8275285Z             {
2026-06-21T03:31:34.8275418Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8275528Z               "line": 501
2026-06-21T03:31:34.8275632Z             },
2026-06-21T03:31:34.8275738Z             {
2026-06-21T03:31:34.8275875Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8275985Z               "line": 517
2026-06-21T03:31:34.8276086Z             },
2026-06-21T03:31:34.8276195Z             {
2026-06-21T03:31:34.8276324Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8276435Z               "line": 536
2026-06-21T03:31:34.8276552Z             },
2026-06-21T03:31:34.8276651Z             {
2026-06-21T03:31:34.8276785Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8276897Z               "line": 7660
2026-06-21T03:31:34.8277002Z             }
2026-06-21T03:31:34.8277103Z           ]
2026-06-21T03:31:34.8277217Z         }
2026-06-21T03:31:34.8277331Z       }
2026-06-21T03:31:34.8277432Z     },
2026-06-21T03:31:34.8277541Z     {
2026-06-21T03:31:34.8277646Z       "id": "REQ-MSG-6",
2026-06-21T03:31:34.8279372Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T03:31:34.8279504Z       "requiredStages": [
2026-06-21T03:31:34.8279610Z         "doc",
2026-06-21T03:31:34.8279722Z         "impl",
2026-06-21T03:31:34.8279831Z         "unit"
2026-06-21T03:31:34.8279941Z       ],
2026-06-21T03:31:34.8280042Z       "stages": {
2026-06-21T03:31:34.8280155Z         "doc": {
2026-06-21T03:31:34.8280380Z           "complete": true,
2026-06-21T03:31:34.8280488Z           "evidence": [
2026-06-21T03:31:34.8280595Z             {
2026-06-21T03:31:34.8280709Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8280818Z               "line": 234
2026-06-21T03:31:34.8280928Z             }
2026-06-21T03:31:34.8281033Z           ]
2026-06-21T03:31:34.8281142Z         },
2026-06-21T03:31:34.8281248Z         "impl": {
2026-06-21T03:31:34.8281357Z           "complete": true,
2026-06-21T03:31:34.8281467Z           "evidence": [
2026-06-21T03:31:34.8281572Z             {
2026-06-21T03:31:34.8281729Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8281939Z               "line": 177
2026-06-21T03:31:34.8282047Z             },
2026-06-21T03:31:34.8282152Z             {
2026-06-21T03:31:34.8282312Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8282426Z               "line": 428
2026-06-21T03:31:34.8282537Z             },
2026-06-21T03:31:34.8282651Z             {
2026-06-21T03:31:34.8282789Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8282899Z               "line": 451
2026-06-21T03:31:34.8283003Z             },
2026-06-21T03:31:34.8283104Z             {
2026-06-21T03:31:34.8283247Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.8283360Z               "line": 89
2026-06-21T03:31:34.8283462Z             },
2026-06-21T03:31:34.8283566Z             {
2026-06-21T03:31:34.8283714Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.8283824Z               "line": 155
2026-06-21T03:31:34.8283934Z             }
2026-06-21T03:31:34.8284034Z           ]
2026-06-21T03:31:34.8284139Z         },
2026-06-21T03:31:34.8284248Z         "int": {
2026-06-21T03:31:34.8284358Z           "complete": false,
2026-06-21T03:31:34.8284468Z           "evidence": []
2026-06-21T03:31:34.8284567Z         },
2026-06-21T03:31:34.8284678Z         "unit": {
2026-06-21T03:31:34.8284788Z           "complete": true,
2026-06-21T03:31:34.8284891Z           "evidence": [
2026-06-21T03:31:34.8284995Z             {
2026-06-21T03:31:34.8285145Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8285267Z               "line": 1746
2026-06-21T03:31:34.8285373Z             },
2026-06-21T03:31:34.8285478Z             {
2026-06-21T03:31:34.8285615Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.8285731Z               "line": 219
2026-06-21T03:31:34.8285840Z             }
2026-06-21T03:31:34.8285945Z           ]
2026-06-21T03:31:34.8286046Z         }
2026-06-21T03:31:34.8286135Z       }
2026-06-21T03:31:34.8286245Z     },
2026-06-21T03:31:34.8286351Z     {
2026-06-21T03:31:34.8286479Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T03:31:34.8290344Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T03:31:34.8290611Z       "requiredStages": [
2026-06-21T03:31:34.8290720Z         "doc",
2026-06-21T03:31:34.8290827Z         "impl",
2026-06-21T03:31:34.8290940Z         "unit",
2026-06-21T03:31:34.8291044Z         "int"
2026-06-21T03:31:34.8291151Z       ],
2026-06-21T03:31:34.8291255Z       "stages": {
2026-06-21T03:31:34.8291364Z         "doc": {
2026-06-21T03:31:34.8291489Z           "complete": true,
2026-06-21T03:31:34.8291593Z           "evidence": [
2026-06-21T03:31:34.8291702Z             {
2026-06-21T03:31:34.8291955Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T03:31:34.8292166Z               "line": 47
2026-06-21T03:31:34.8292275Z             }
2026-06-21T03:31:34.8292386Z           ]
2026-06-21T03:31:34.8292490Z         },
2026-06-21T03:31:34.8292594Z         "impl": {
2026-06-21T03:31:34.8292707Z           "complete": true,
2026-06-21T03:31:34.8292816Z           "evidence": [
2026-06-21T03:31:34.8292934Z             {
2026-06-21T03:31:34.8293073Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8293187Z               "line": 20
2026-06-21T03:31:34.8293301Z             },
2026-06-21T03:31:34.8293407Z             {
2026-06-21T03:31:34.8293544Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8293654Z               "line": 33
2026-06-21T03:31:34.8293769Z             },
2026-06-21T03:31:34.8293873Z             {
2026-06-21T03:31:34.8294008Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8294127Z               "line": 47
2026-06-21T03:31:34.8294226Z             },
2026-06-21T03:31:34.8294342Z             {
2026-06-21T03:31:34.8294475Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8294579Z               "line": 58
2026-06-21T03:31:34.8294690Z             },
2026-06-21T03:31:34.8294798Z             {
2026-06-21T03:31:34.8294938Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8295052Z               "line": 14
2026-06-21T03:31:34.8295166Z             },
2026-06-21T03:31:34.8295272Z             {
2026-06-21T03:31:34.8295409Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8295517Z               "line": 27
2026-06-21T03:31:34.8295618Z             },
2026-06-21T03:31:34.8295728Z             {
2026-06-21T03:31:34.8295851Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8295967Z               "line": 40
2026-06-21T03:31:34.8296071Z             },
2026-06-21T03:31:34.8296185Z             {
2026-06-21T03:31:34.8296334Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.8296443Z               "line": 92
2026-06-21T03:31:34.8296558Z             },
2026-06-21T03:31:34.8296663Z             {
2026-06-21T03:31:34.8296810Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8296916Z               "line": 143
2026-06-21T03:31:34.8297029Z             },
2026-06-21T03:31:34.8297134Z             {
2026-06-21T03:31:34.8297288Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8297401Z               "line": 216
2026-06-21T03:31:34.8297512Z             },
2026-06-21T03:31:34.8297617Z             {
2026-06-21T03:31:34.8297753Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8297872Z               "line": 533
2026-06-21T03:31:34.8297980Z             },
2026-06-21T03:31:34.8298084Z             {
2026-06-21T03:31:34.8298219Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:31:34.8298328Z               "line": 78
2026-06-21T03:31:34.8298437Z             },
2026-06-21T03:31:34.8298543Z             {
2026-06-21T03:31:34.8298680Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8298791Z               "line": 3111
2026-06-21T03:31:34.8298900Z             }
2026-06-21T03:31:34.8299071Z           ]
2026-06-21T03:31:34.8299182Z         },
2026-06-21T03:31:34.8299286Z         "int": {
2026-06-21T03:31:34.8299400Z           "complete": true,
2026-06-21T03:31:34.8299672Z           "evidence": [
2026-06-21T03:31:34.8299778Z             {
2026-06-21T03:31:34.8299930Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T03:31:34.8300050Z               "line": 15
2026-06-21T03:31:34.8300155Z             }
2026-06-21T03:31:34.8300264Z           ]
2026-06-21T03:31:34.8300365Z         },
2026-06-21T03:31:34.8300475Z         "unit": {
2026-06-21T03:31:34.8300596Z           "complete": true,
2026-06-21T03:31:34.8300711Z           "evidence": [
2026-06-21T03:31:34.8300820Z             {
2026-06-21T03:31:34.8300956Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8301158Z               "line": 102
2026-06-21T03:31:34.8301261Z             },
2026-06-21T03:31:34.8301367Z             {
2026-06-21T03:31:34.8301510Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:31:34.8301619Z               "line": 137
2026-06-21T03:31:34.8301730Z             },
2026-06-21T03:31:34.8301829Z             {
2026-06-21T03:31:34.8301972Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8302082Z               "line": 98
2026-06-21T03:31:34.8302191Z             },
2026-06-21T03:31:34.8302302Z             {
2026-06-21T03:31:34.8302434Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8302549Z               "line": 106
2026-06-21T03:31:34.8302655Z             },
2026-06-21T03:31:34.8302763Z             {
2026-06-21T03:31:34.8302892Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8303008Z               "line": 113
2026-06-21T03:31:34.8303116Z             },
2026-06-21T03:31:34.8303220Z             {
2026-06-21T03:31:34.8303362Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:31:34.8303471Z               "line": 122
2026-06-21T03:31:34.8303580Z             }
2026-06-21T03:31:34.8303681Z           ]
2026-06-21T03:31:34.8307966Z         }
2026-06-21T03:31:34.8308115Z       }
2026-06-21T03:31:34.8308219Z     },
2026-06-21T03:31:34.8308332Z     {
2026-06-21T03:31:34.8308489Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T03:31:34.8313681Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T03:31:34.8313866Z       "requiredStages": [
2026-06-21T03:31:34.8313979Z         "doc",
2026-06-21T03:31:34.8314087Z         "impl",
2026-06-21T03:31:34.8314198Z         "unit",
2026-06-21T03:31:34.8314303Z         "int"
2026-06-21T03:31:34.8314579Z       ],
2026-06-21T03:31:34.8314688Z       "stages": {
2026-06-21T03:31:34.8314794Z         "doc": {
2026-06-21T03:31:34.8314913Z           "complete": true,
2026-06-21T03:31:34.8315027Z           "evidence": [
2026-06-21T03:31:34.8315133Z             {
2026-06-21T03:31:34.8315308Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T03:31:34.8315428Z               "line": 277
2026-06-21T03:31:34.8315533Z             },
2026-06-21T03:31:34.8315633Z             {
2026-06-21T03:31:34.8315763Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8315871Z               "line": 198
2026-06-21T03:31:34.8315981Z             }
2026-06-21T03:31:34.8316190Z           ]
2026-06-21T03:31:34.8316291Z         },
2026-06-21T03:31:34.8316402Z         "impl": {
2026-06-21T03:31:34.8316519Z           "complete": true,
2026-06-21T03:31:34.8316642Z           "evidence": [
2026-06-21T03:31:34.8316743Z             {
2026-06-21T03:31:34.8316900Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8317024Z               "line": 977
2026-06-21T03:31:34.8317130Z             },
2026-06-21T03:31:34.8317239Z             {
2026-06-21T03:31:34.8317392Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8317511Z               "line": 23
2026-06-21T03:31:34.8317615Z             },
2026-06-21T03:31:34.8317721Z             {
2026-06-21T03:31:34.8317863Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8317973Z               "line": 91
2026-06-21T03:31:34.8318079Z             },
2026-06-21T03:31:34.8318183Z             {
2026-06-21T03:31:34.8318332Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8318440Z               "line": 239
2026-06-21T03:31:34.8318555Z             },
2026-06-21T03:31:34.8318666Z             {
2026-06-21T03:31:34.8318803Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8318911Z               "line": 287
2026-06-21T03:31:34.8319096Z             },
2026-06-21T03:31:34.8319209Z             {
2026-06-21T03:31:34.8319358Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8319472Z               "line": 311
2026-06-21T03:31:34.8319576Z             },
2026-06-21T03:31:34.8319683Z             {
2026-06-21T03:31:34.8319843Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8319949Z               "line": 60
2026-06-21T03:31:34.8320059Z             },
2026-06-21T03:31:34.8320162Z             {
2026-06-21T03:31:34.8320307Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8320421Z               "line": 889
2026-06-21T03:31:34.8320530Z             }
2026-06-21T03:31:34.8320640Z           ]
2026-06-21T03:31:34.8320740Z         },
2026-06-21T03:31:34.8320855Z         "int": {
2026-06-21T03:31:34.8320965Z           "complete": true,
2026-06-21T03:31:34.8321070Z           "evidence": [
2026-06-21T03:31:34.8321180Z             {
2026-06-21T03:31:34.8321364Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.8321470Z               "line": 1034
2026-06-21T03:31:34.8321571Z             },
2026-06-21T03:31:34.8321679Z             {
2026-06-21T03:31:34.8321846Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.8321958Z               "line": 1139
2026-06-21T03:31:34.8322067Z             },
2026-06-21T03:31:34.8322172Z             {
2026-06-21T03:31:34.8322344Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.8322458Z               "line": 1207
2026-06-21T03:31:34.8322564Z             },
2026-06-21T03:31:34.8322677Z             {
2026-06-21T03:31:34.8322850Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:31:34.8322964Z               "line": 1300
2026-06-21T03:31:34.8323068Z             }
2026-06-21T03:31:34.8323179Z           ]
2026-06-21T03:31:34.8323284Z         },
2026-06-21T03:31:34.8323508Z         "unit": {
2026-06-21T03:31:34.8323631Z           "complete": true,
2026-06-21T03:31:34.8323747Z           "evidence": [
2026-06-21T03:31:34.8323860Z             {
2026-06-21T03:31:34.8324023Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.8324142Z               "line": 270
2026-06-21T03:31:34.8324245Z             },
2026-06-21T03:31:34.8324354Z             {
2026-06-21T03:31:34.8324516Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8324629Z               "line": 350
2026-06-21T03:31:34.8324739Z             },
2026-06-21T03:31:34.8324845Z             {
2026-06-21T03:31:34.8324996Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8325201Z               "line": 381
2026-06-21T03:31:34.8325315Z             },
2026-06-21T03:31:34.8325426Z             {
2026-06-21T03:31:34.8325573Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8325684Z               "line": 411
2026-06-21T03:31:34.8325792Z             },
2026-06-21T03:31:34.8325912Z             {
2026-06-21T03:31:34.8326056Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:31:34.8326174Z               "line": 440
2026-06-21T03:31:34.8326284Z             },
2026-06-21T03:31:34.8326389Z             {
2026-06-21T03:31:34.8326541Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8326657Z               "line": 1181
2026-06-21T03:31:34.8326765Z             }
2026-06-21T03:31:34.8326870Z           ]
2026-06-21T03:31:34.8326976Z         }
2026-06-21T03:31:34.8327084Z       }
2026-06-21T03:31:34.8327188Z     },
2026-06-21T03:31:34.8327303Z     {
2026-06-21T03:31:34.8327418Z       "id": "REQ-NET-1",
2026-06-21T03:31:34.8327633Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T03:31:34.8327742Z       "requiredStages": [
2026-06-21T03:31:34.8327860Z         "impl",
2026-06-21T03:31:34.8327971Z         "unit",
2026-06-21T03:31:34.8328076Z         "int"
2026-06-21T03:31:34.8328190Z       ],
2026-06-21T03:31:34.8328286Z       "stages": {
2026-06-21T03:31:34.8328400Z         "doc": {
2026-06-21T03:31:34.8328509Z           "complete": false,
2026-06-21T03:31:34.8328620Z           "evidence": []
2026-06-21T03:31:34.8328729Z         },
2026-06-21T03:31:34.8328834Z         "impl": {
2026-06-21T03:31:34.8329062Z           "complete": true,
2026-06-21T03:31:34.8329168Z           "evidence": [
2026-06-21T03:31:34.8329277Z             {
2026-06-21T03:31:34.8329433Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8329543Z               "line": 54
2026-06-21T03:31:34.8329656Z             },
2026-06-21T03:31:34.8329764Z             {
2026-06-21T03:31:34.8329914Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8330027Z               "line": 594
2026-06-21T03:31:34.8330132Z             },
2026-06-21T03:31:34.8330238Z             {
2026-06-21T03:31:34.8330370Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:31:34.8330486Z               "line": 130
2026-06-21T03:31:34.8330590Z             },
2026-06-21T03:31:34.8330704Z             {
2026-06-21T03:31:34.8330848Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8330966Z               "line": 97
2026-06-21T03:31:34.8331076Z             },
2026-06-21T03:31:34.8331182Z             {
2026-06-21T03:31:34.8331339Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8331450Z               "line": 159
2026-06-21T03:31:34.8331563Z             },
2026-06-21T03:31:34.8331667Z             {
2026-06-21T03:31:34.8331821Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8331934Z               "line": 175
2026-06-21T03:31:34.8332040Z             },
2026-06-21T03:31:34.8332141Z             {
2026-06-21T03:31:34.8332286Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8332391Z               "line": 190
2026-06-21T03:31:34.8332612Z             },
2026-06-21T03:31:34.8332723Z             {
2026-06-21T03:31:34.8332857Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8332975Z               "line": 271
2026-06-21T03:31:34.8333081Z             },
2026-06-21T03:31:34.8333186Z             {
2026-06-21T03:31:34.8333343Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8333448Z               "line": 306
2026-06-21T03:31:34.8333557Z             },
2026-06-21T03:31:34.8333667Z             {
2026-06-21T03:31:34.8333805Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8333914Z               "line": 312
2026-06-21T03:31:34.8334134Z             },
2026-06-21T03:31:34.8334248Z             {
2026-06-21T03:31:34.8334393Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8334506Z               "line": 318
2026-06-21T03:31:34.8334612Z             },
2026-06-21T03:31:34.8334702Z             {
2026-06-21T03:31:34.8334858Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8334977Z               "line": 334
2026-06-21T03:31:34.8335076Z             },
2026-06-21T03:31:34.8335170Z             {
2026-06-21T03:31:34.8335308Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8335419Z               "line": 354
2026-06-21T03:31:34.8335527Z             },
2026-06-21T03:31:34.8335634Z             {
2026-06-21T03:31:34.8335776Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.8335885Z               "line": 35
2026-06-21T03:31:34.8335981Z             },
2026-06-21T03:31:34.8336086Z             {
2026-06-21T03:31:34.8336239Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.8336352Z               "line": 85
2026-06-21T03:31:34.8336462Z             },
2026-06-21T03:31:34.8336563Z             {
2026-06-21T03:31:34.8336706Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.8336820Z               "line": 138
2026-06-21T03:31:34.8336936Z             },
2026-06-21T03:31:34.8337044Z             {
2026-06-21T03:31:34.8337174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8337293Z               "line": 2953
2026-06-21T03:31:34.8337402Z             },
2026-06-21T03:31:34.8337508Z             {
2026-06-21T03:31:34.8337640Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.8337753Z               "line": 17
2026-06-21T03:31:34.8337854Z             }
2026-06-21T03:31:34.8337960Z           ]
2026-06-21T03:31:34.8338068Z         },
2026-06-21T03:31:34.8338173Z         "int": {
2026-06-21T03:31:34.8338298Z           "complete": true,
2026-06-21T03:31:34.8338411Z           "evidence": [
2026-06-21T03:31:34.8338518Z             {
2026-06-21T03:31:34.8338678Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8338784Z               "line": 341
2026-06-21T03:31:34.8338888Z             },
2026-06-21T03:31:34.8339074Z             {
2026-06-21T03:31:34.8339222Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8339327Z               "line": 675
2026-06-21T03:31:34.8339438Z             },
2026-06-21T03:31:34.8339551Z             {
2026-06-21T03:31:34.8339694Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8339805Z               "line": 973
2026-06-21T03:31:34.8339908Z             }
2026-06-21T03:31:34.8340017Z           ]
2026-06-21T03:31:34.8340123Z         },
2026-06-21T03:31:34.8340230Z         "unit": {
2026-06-21T03:31:34.8340348Z           "complete": true,
2026-06-21T03:31:34.8340459Z           "evidence": [
2026-06-21T03:31:34.8340568Z             {
2026-06-21T03:31:34.8340711Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8340826Z               "line": 651
2026-06-21T03:31:34.8340940Z             },
2026-06-21T03:31:34.8341046Z             {
2026-06-21T03:31:34.8341197Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8341307Z               "line": 686
2026-06-21T03:31:34.8341512Z             },
2026-06-21T03:31:34.8341612Z             {
2026-06-21T03:31:34.8341774Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8341894Z               "line": 940
2026-06-21T03:31:34.8342000Z             },
2026-06-21T03:31:34.8342108Z             {
2026-06-21T03:31:34.8342256Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:31:34.8342367Z               "line": 201
2026-06-21T03:31:34.8342475Z             },
2026-06-21T03:31:34.8342581Z             {
2026-06-21T03:31:34.8342743Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8342951Z               "line": 442
2026-06-21T03:31:34.8343064Z             },
2026-06-21T03:31:34.8343173Z             {
2026-06-21T03:31:34.8343326Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8343435Z               "line": 456
2026-06-21T03:31:34.8343545Z             },
2026-06-21T03:31:34.8343655Z             {
2026-06-21T03:31:34.8343817Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8343937Z               "line": 475
2026-06-21T03:31:34.8344046Z             },
2026-06-21T03:31:34.8344155Z             {
2026-06-21T03:31:34.8344299Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.8344408Z               "line": 120
2026-06-21T03:31:34.8344518Z             },
2026-06-21T03:31:34.8344628Z             {
2026-06-21T03:31:34.8344780Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:31:34.8344886Z               "line": 163
2026-06-21T03:31:34.8344990Z             },
2026-06-21T03:31:34.8345095Z             {
2026-06-21T03:31:34.8345253Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:31:34.8345361Z               "line": 530
2026-06-21T03:31:34.8345456Z             },
2026-06-21T03:31:34.8345565Z             {
2026-06-21T03:31:34.8345697Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.8345816Z               "line": 616
2026-06-21T03:31:34.8345922Z             },
2026-06-21T03:31:34.8346035Z             {
2026-06-21T03:31:34.8346165Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.8346269Z               "line": 1006
2026-06-21T03:31:34.8346378Z             }
2026-06-21T03:31:34.8346480Z           ]
2026-06-21T03:31:34.8346589Z         }
2026-06-21T03:31:34.8346688Z       }
2026-06-21T03:31:34.8346799Z     },
2026-06-21T03:31:34.8346908Z     {
2026-06-21T03:31:34.8347022Z       "id": "REQ-NET-2",
2026-06-21T03:31:34.8347237Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T03:31:34.8347356Z       "requiredStages": [
2026-06-21T03:31:34.8347476Z         "impl"
2026-06-21T03:31:34.8347575Z       ],
2026-06-21T03:31:34.8347690Z       "stages": {
2026-06-21T03:31:34.8347801Z         "doc": {
2026-06-21T03:31:34.8347918Z           "complete": false,
2026-06-21T03:31:34.8348034Z           "evidence": []
2026-06-21T03:31:34.8348140Z         },
2026-06-21T03:31:34.8348251Z         "impl": {
2026-06-21T03:31:34.8348356Z           "complete": true,
2026-06-21T03:31:34.8348471Z           "evidence": [
2026-06-21T03:31:34.8348585Z             {
2026-06-21T03:31:34.8348733Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.8348839Z               "line": 57
2026-06-21T03:31:34.8348933Z             },
2026-06-21T03:31:34.8349139Z             {
2026-06-21T03:31:34.8349281Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8349407Z               "line": 71
2026-06-21T03:31:34.8349506Z             },
2026-06-21T03:31:34.8349606Z             {
2026-06-21T03:31:34.8349759Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8349873Z               "line": 81
2026-06-21T03:31:34.8349974Z             },
2026-06-21T03:31:34.8350088Z             {
2026-06-21T03:31:34.8350235Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8350356Z               "line": 159
2026-06-21T03:31:34.8350553Z             },
2026-06-21T03:31:34.8350668Z             {
2026-06-21T03:31:34.8350809Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8350913Z               "line": 175
2026-06-21T03:31:34.8351024Z             },
2026-06-21T03:31:34.8351123Z             {
2026-06-21T03:31:34.8351271Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:31:34.8351386Z               "line": 190
2026-06-21T03:31:34.8351495Z             }
2026-06-21T03:31:34.8351596Z           ]
2026-06-21T03:31:34.8351706Z         },
2026-06-21T03:31:34.8351810Z         "int": {
2026-06-21T03:31:34.8351926Z           "complete": false,
2026-06-21T03:31:34.8352144Z           "evidence": []
2026-06-21T03:31:34.8352250Z         },
2026-06-21T03:31:34.8352354Z         "unit": {
2026-06-21T03:31:34.8352468Z           "complete": true,
2026-06-21T03:31:34.8352584Z           "evidence": [
2026-06-21T03:31:34.8352706Z             {
2026-06-21T03:31:34.8352855Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.8352974Z               "line": 402
2026-06-21T03:31:34.8353079Z             }
2026-06-21T03:31:34.8353180Z           ]
2026-06-21T03:31:34.8353289Z         }
2026-06-21T03:31:34.8353397Z       }
2026-06-21T03:31:34.8353497Z     },
2026-06-21T03:31:34.8353587Z     {
2026-06-21T03:31:34.8353700Z       "id": "REQ-NET-3",
2026-06-21T03:31:34.8353915Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T03:31:34.8354043Z       "requiredStages": [
2026-06-21T03:31:34.8354158Z         "impl",
2026-06-21T03:31:34.8354268Z         "unit"
2026-06-21T03:31:34.8354382Z       ],
2026-06-21T03:31:34.8354493Z       "stages": {
2026-06-21T03:31:34.8354602Z         "doc": {
2026-06-21T03:31:34.8354720Z           "complete": false,
2026-06-21T03:31:34.8354836Z           "evidence": []
2026-06-21T03:31:34.8354940Z         },
2026-06-21T03:31:34.8355044Z         "impl": {
2026-06-21T03:31:34.8355164Z           "complete": true,
2026-06-21T03:31:34.8355278Z           "evidence": [
2026-06-21T03:31:34.8355388Z             {
2026-06-21T03:31:34.8355531Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.8355636Z               "line": 39
2026-06-21T03:31:34.8355737Z             },
2026-06-21T03:31:34.8355842Z             {
2026-06-21T03:31:34.8355983Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.8356093Z               "line": 182
2026-06-21T03:31:34.8356201Z             },
2026-06-21T03:31:34.8356304Z             {
2026-06-21T03:31:34.8356448Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:31:34.8356562Z               "line": 333
2026-06-21T03:31:34.8356677Z             },
2026-06-21T03:31:34.8356782Z             {
2026-06-21T03:31:34.8356920Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:31:34.8357035Z               "line": 36
2026-06-21T03:31:34.8357140Z             },
2026-06-21T03:31:34.8357249Z             {
2026-06-21T03:31:34.8357407Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8357526Z               "line": 158
2026-06-21T03:31:34.8357635Z             },
2026-06-21T03:31:34.8357731Z             {
2026-06-21T03:31:34.8357888Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8357999Z               "line": 238
2026-06-21T03:31:34.8358107Z             },
2026-06-21T03:31:34.8358212Z             {
2026-06-21T03:31:34.8358366Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8358483Z               "line": 259
2026-06-21T03:31:34.8358585Z             },
2026-06-21T03:31:34.8358695Z             {
2026-06-21T03:31:34.8358845Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8359051Z               "line": 317
2026-06-21T03:31:34.8359145Z             },
2026-06-21T03:31:34.8359265Z             {
2026-06-21T03:31:34.8359423Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8359638Z               "line": 336
2026-06-21T03:31:34.8359743Z             },
2026-06-21T03:31:34.8359846Z             {
2026-06-21T03:31:34.8360000Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8360109Z               "line": 374
2026-06-21T03:31:34.8360219Z             },
2026-06-21T03:31:34.8360329Z             {
2026-06-21T03:31:34.8360471Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8360577Z               "line": 419
2026-06-21T03:31:34.8360667Z             },
2026-06-21T03:31:34.8360776Z             {
2026-06-21T03:31:34.8360926Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8361132Z               "line": 432
2026-06-21T03:31:34.8361233Z             },
2026-06-21T03:31:34.8361322Z             {
2026-06-21T03:31:34.8361473Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8361584Z               "line": 29
2026-06-21T03:31:34.8361693Z             },
2026-06-21T03:31:34.8361812Z             {
2026-06-21T03:31:34.8361956Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8362060Z               "line": 72
2026-06-21T03:31:34.8362171Z             },
2026-06-21T03:31:34.8362280Z             {
2026-06-21T03:31:34.8362427Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8362543Z               "line": 123
2026-06-21T03:31:34.8362647Z             }
2026-06-21T03:31:34.8362751Z           ]
2026-06-21T03:31:34.8362867Z         },
2026-06-21T03:31:34.8362971Z         "int": {
2026-06-21T03:31:34.8363096Z           "complete": false,
2026-06-21T03:31:34.8363196Z           "evidence": []
2026-06-21T03:31:34.8363305Z         },
2026-06-21T03:31:34.8363421Z         "unit": {
2026-06-21T03:31:34.8363529Z           "complete": true,
2026-06-21T03:31:34.8363643Z           "evidence": [
2026-06-21T03:31:34.8363754Z             {
2026-06-21T03:31:34.8363905Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.8364028Z               "line": 223
2026-06-21T03:31:34.8364139Z             },
2026-06-21T03:31:34.8364246Z             {
2026-06-21T03:31:34.8364379Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.8364499Z               "line": 351
2026-06-21T03:31:34.8364603Z             },
2026-06-21T03:31:34.8364713Z             {
2026-06-21T03:31:34.8364847Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:31:34.8364956Z               "line": 504
2026-06-21T03:31:34.8365067Z             },
2026-06-21T03:31:34.8365167Z             {
2026-06-21T03:31:34.8365309Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:31:34.8365415Z               "line": 93
2026-06-21T03:31:34.8365519Z             },
2026-06-21T03:31:34.8365623Z             {
2026-06-21T03:31:34.8365767Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:31:34.8365871Z               "line": 142
2026-06-21T03:31:34.8365977Z             },
2026-06-21T03:31:34.8366087Z             {
2026-06-21T03:31:34.8366239Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8366345Z               "line": 315
2026-06-21T03:31:34.8366448Z             },
2026-06-21T03:31:34.8366561Z             {
2026-06-21T03:31:34.8366714Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8366827Z               "line": 355
2026-06-21T03:31:34.8366931Z             },
2026-06-21T03:31:34.8367033Z             {
2026-06-21T03:31:34.8367179Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:31:34.8367290Z               "line": 494
2026-06-21T03:31:34.8367399Z             }
2026-06-21T03:31:34.8367513Z           ]
2026-06-21T03:31:34.8367624Z         }
2026-06-21T03:31:34.8367733Z       }
2026-06-21T03:31:34.8367823Z     },
2026-06-21T03:31:34.8367929Z     {
2026-06-21T03:31:34.8368052Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T03:31:34.8368334Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T03:31:34.8368539Z       "requiredStages": [
2026-06-21T03:31:34.8368648Z         "impl",
2026-06-21T03:31:34.8368758Z         "unit"
2026-06-21T03:31:34.8368864Z       ],
2026-06-21T03:31:34.8369063Z       "stages": {
2026-06-21T03:31:34.8369169Z         "doc": {
2026-06-21T03:31:34.8369278Z           "complete": false,
2026-06-21T03:31:34.8369400Z           "evidence": []
2026-06-21T03:31:34.8369505Z         },
2026-06-21T03:31:34.8369606Z         "impl": {
2026-06-21T03:31:34.8369711Z           "complete": true,
2026-06-21T03:31:34.8369830Z           "evidence": [
2026-06-21T03:31:34.8369935Z             {
2026-06-21T03:31:34.8370091Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8370364Z               "line": 60
2026-06-21T03:31:34.8370474Z             },
2026-06-21T03:31:34.8370588Z             {
2026-06-21T03:31:34.8370726Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8370842Z               "line": 68
2026-06-21T03:31:34.8370945Z             },
2026-06-21T03:31:34.8371060Z             {
2026-06-21T03:31:34.8371209Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8371322Z               "line": 86
2026-06-21T03:31:34.8371433Z             },
2026-06-21T03:31:34.8371538Z             {
2026-06-21T03:31:34.8371679Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8371783Z               "line": 120
2026-06-21T03:31:34.8371892Z             },
2026-06-21T03:31:34.8372000Z             {
2026-06-21T03:31:34.8372130Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8372244Z               "line": 127
2026-06-21T03:31:34.8372358Z             },
2026-06-21T03:31:34.8372473Z             {
2026-06-21T03:31:34.8372620Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8372726Z               "line": 143
2026-06-21T03:31:34.8372835Z             },
2026-06-21T03:31:34.8372939Z             {
2026-06-21T03:31:34.8373079Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:31:34.8373184Z               "line": 16
2026-06-21T03:31:34.8373293Z             }
2026-06-21T03:31:34.8373403Z           ]
2026-06-21T03:31:34.8373508Z         },
2026-06-21T03:31:34.8373617Z         "int": {
2026-06-21T03:31:34.8373733Z           "complete": false,
2026-06-21T03:31:34.8373846Z           "evidence": []
2026-06-21T03:31:34.8373951Z         },
2026-06-21T03:31:34.8374062Z         "unit": {
2026-06-21T03:31:34.8374170Z           "complete": true,
2026-06-21T03:31:34.8374286Z           "evidence": [
2026-06-21T03:31:34.8374391Z             {
2026-06-21T03:31:34.8374537Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8374651Z               "line": 199
2026-06-21T03:31:34.8374755Z             },
2026-06-21T03:31:34.8374853Z             {
2026-06-21T03:31:34.8374992Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8375097Z               "line": 218
2026-06-21T03:31:34.8375201Z             },
2026-06-21T03:31:34.8375303Z             {
2026-06-21T03:31:34.8375454Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8375564Z               "line": 234
2026-06-21T03:31:34.8375669Z             },
2026-06-21T03:31:34.8375778Z             {
2026-06-21T03:31:34.8375913Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:31:34.8376021Z               "line": 256
2026-06-21T03:31:34.8376126Z             },
2026-06-21T03:31:34.8376227Z             {
2026-06-21T03:31:34.8376370Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:31:34.8376489Z               "line": 124
2026-06-21T03:31:34.8376600Z             },
2026-06-21T03:31:34.8376708Z             {
2026-06-21T03:31:34.8376857Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:31:34.8376971Z               "line": 140
2026-06-21T03:31:34.8377080Z             },
2026-06-21T03:31:34.8377184Z             {
2026-06-21T03:31:34.8377335Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:31:34.8377554Z               "line": 155
2026-06-21T03:31:34.8377645Z             }
2026-06-21T03:31:34.8377749Z           ]
2026-06-21T03:31:34.8377845Z         }
2026-06-21T03:31:34.8377955Z       }
2026-06-21T03:31:34.8378054Z     },
2026-06-21T03:31:34.8378160Z     {
2026-06-21T03:31:34.8378284Z       "id": "REQ-NOTIF-1",
2026-06-21T03:31:34.8378665Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T03:31:34.8378775Z       "requiredStages": [
2026-06-21T03:31:34.8378875Z         "impl",
2026-06-21T03:31:34.8379080Z         "unit",
2026-06-21T03:31:34.8379294Z         "int"
2026-06-21T03:31:34.8379410Z       ],
2026-06-21T03:31:34.8379533Z       "stages": {
2026-06-21T03:31:34.8379638Z         "doc": {
2026-06-21T03:31:34.8379763Z           "complete": false,
2026-06-21T03:31:34.8379862Z           "evidence": []
2026-06-21T03:31:34.8379970Z         },
2026-06-21T03:31:34.8380080Z         "impl": {
2026-06-21T03:31:34.8380200Z           "complete": true,
2026-06-21T03:31:34.8380313Z           "evidence": [
2026-06-21T03:31:34.8380419Z             {
2026-06-21T03:31:34.8380576Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8380690Z               "line": 514
2026-06-21T03:31:34.8380791Z             },
2026-06-21T03:31:34.8380886Z             {
2026-06-21T03:31:34.8381039Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8381144Z               "line": 30
2026-06-21T03:31:34.8381253Z             },
2026-06-21T03:31:34.8381354Z             {
2026-06-21T03:31:34.8381487Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8381596Z               "line": 69
2026-06-21T03:31:34.8381707Z             },
2026-06-21T03:31:34.8381815Z             {
2026-06-21T03:31:34.8381959Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8382055Z               "line": 93
2026-06-21T03:31:34.8382168Z             },
2026-06-21T03:31:34.8382277Z             {
2026-06-21T03:31:34.8382424Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8382532Z               "line": 107
2026-06-21T03:31:34.8382642Z             },
2026-06-21T03:31:34.8382753Z             {
2026-06-21T03:31:34.8382889Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8382995Z               "line": 142
2026-06-21T03:31:34.8383091Z             },
2026-06-21T03:31:34.8383204Z             {
2026-06-21T03:31:34.8383349Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8383452Z               "line": 187
2026-06-21T03:31:34.8383562Z             },
2026-06-21T03:31:34.8383663Z             {
2026-06-21T03:31:34.8383805Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8383911Z               "line": 258
2026-06-21T03:31:34.8384030Z             },
2026-06-21T03:31:34.8384139Z             {
2026-06-21T03:31:34.8384274Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8384396Z               "line": 372
2026-06-21T03:31:34.8384507Z             },
2026-06-21T03:31:34.8384617Z             {
2026-06-21T03:31:34.8384750Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8384865Z               "line": 479
2026-06-21T03:31:34.8384965Z             },
2026-06-21T03:31:34.8385058Z             {
2026-06-21T03:31:34.8385211Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8385319Z               "line": 24
2026-06-21T03:31:34.8385423Z             },
2026-06-21T03:31:34.8385528Z             {
2026-06-21T03:31:34.8385681Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8385799Z               "line": 34
2026-06-21T03:31:34.8385906Z             },
2026-06-21T03:31:34.8386014Z             {
2026-06-21T03:31:34.8386163Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8386282Z               "line": 60
2026-06-21T03:31:34.8386492Z             },
2026-06-21T03:31:34.8386601Z             {
2026-06-21T03:31:34.8386753Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8386864Z               "line": 82
2026-06-21T03:31:34.8386968Z             },
2026-06-21T03:31:34.8387073Z             {
2026-06-21T03:31:34.8387226Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8387335Z               "line": 94
2026-06-21T03:31:34.8387441Z             },
2026-06-21T03:31:34.8387550Z             {
2026-06-21T03:31:34.8387691Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.8387811Z               "line": 96
2026-06-21T03:31:34.8387990Z             },
2026-06-21T03:31:34.8388090Z             {
2026-06-21T03:31:34.8388247Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T03:31:34.8388362Z               "line": 44
2026-06-21T03:31:34.8388462Z             },
2026-06-21T03:31:34.8388557Z             {
2026-06-21T03:31:34.8388706Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.8388825Z               "line": 20
2026-06-21T03:31:34.8388934Z             },
2026-06-21T03:31:34.8389130Z             {
2026-06-21T03:31:34.8389273Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.8389398Z               "line": 30
2026-06-21T03:31:34.8389492Z             },
2026-06-21T03:31:34.8389602Z             {
2026-06-21T03:31:34.8389741Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.8389850Z               "line": 50
2026-06-21T03:31:34.8389955Z             },
2026-06-21T03:31:34.8390060Z             {
2026-06-21T03:31:34.8390207Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8390313Z               "line": 28
2026-06-21T03:31:34.8390426Z             },
2026-06-21T03:31:34.8390535Z             {
2026-06-21T03:31:34.8390679Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8390793Z               "line": 126
2026-06-21T03:31:34.8390892Z             },
2026-06-21T03:31:34.8390994Z             {
2026-06-21T03:31:34.8391131Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8391241Z               "line": 161
2026-06-21T03:31:34.8391342Z             },
2026-06-21T03:31:34.8391455Z             {
2026-06-21T03:31:34.8391604Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8391718Z               "line": 202
2026-06-21T03:31:34.8391818Z             },
2026-06-21T03:31:34.8395790Z             {
2026-06-21T03:31:34.8395988Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8396107Z               "line": 213
2026-06-21T03:31:34.8396246Z             },
2026-06-21T03:31:34.8396360Z             {
2026-06-21T03:31:34.8396508Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8396626Z               "line": 238
2026-06-21T03:31:34.8396733Z             },
2026-06-21T03:31:34.8396842Z             {
2026-06-21T03:31:34.8396970Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8397090Z               "line": 261
2026-06-21T03:31:34.8397200Z             },
2026-06-21T03:31:34.8397304Z             {
2026-06-21T03:31:34.8397448Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8397562Z               "line": 86
2026-06-21T03:31:34.8397663Z             }
2026-06-21T03:31:34.8397758Z           ]
2026-06-21T03:31:34.8397867Z         },
2026-06-21T03:31:34.8397973Z         "int": {
2026-06-21T03:31:34.8398092Z           "complete": true,
2026-06-21T03:31:34.8398195Z           "evidence": [
2026-06-21T03:31:34.8398300Z             {
2026-06-21T03:31:34.8398465Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8398574Z               "line": 285
2026-06-21T03:31:34.8398674Z             },
2026-06-21T03:31:34.8398775Z             {
2026-06-21T03:31:34.8398912Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:31:34.8399113Z               "line": 145
2026-06-21T03:31:34.8399399Z             },
2026-06-21T03:31:34.8399498Z             {
2026-06-21T03:31:34.8399657Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8399771Z               "line": 684
2026-06-21T03:31:34.8399875Z             },
2026-06-21T03:31:34.8399977Z             {
2026-06-21T03:31:34.8400128Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8400234Z               "line": 1102
2026-06-21T03:31:34.8400343Z             }
2026-06-21T03:31:34.8400452Z           ]
2026-06-21T03:31:34.8400558Z         },
2026-06-21T03:31:34.8400667Z         "unit": {
2026-06-21T03:31:34.8400786Z           "complete": true,
2026-06-21T03:31:34.8400996Z           "evidence": [
2026-06-21T03:31:34.8401100Z             {
2026-06-21T03:31:34.8401244Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8401357Z               "line": 572
2026-06-21T03:31:34.8401457Z             },
2026-06-21T03:31:34.8401568Z             {
2026-06-21T03:31:34.8401710Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8401825Z               "line": 636
2026-06-21T03:31:34.8401925Z             },
2026-06-21T03:31:34.8402034Z             {
2026-06-21T03:31:34.8402174Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8402273Z               "line": 740
2026-06-21T03:31:34.8402382Z             },
2026-06-21T03:31:34.8402489Z             {
2026-06-21T03:31:34.8402616Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8402717Z               "line": 772
2026-06-21T03:31:34.8402823Z             },
2026-06-21T03:31:34.8402921Z             {
2026-06-21T03:31:34.8403055Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8403166Z               "line": 840
2026-06-21T03:31:34.8403269Z             },
2026-06-21T03:31:34.8403378Z             {
2026-06-21T03:31:34.8403511Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8403624Z               "line": 898
2026-06-21T03:31:34.8403733Z             },
2026-06-21T03:31:34.8403835Z             {
2026-06-21T03:31:34.8403986Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8404087Z               "line": 1173
2026-06-21T03:31:34.8404197Z             },
2026-06-21T03:31:34.8404301Z             {
2026-06-21T03:31:34.8404459Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8404572Z               "line": 157
2026-06-21T03:31:34.8404678Z             },
2026-06-21T03:31:34.8404783Z             {
2026-06-21T03:31:34.8404925Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8405041Z               "line": 250
2026-06-21T03:31:34.8405150Z             },
2026-06-21T03:31:34.8405255Z             {
2026-06-21T03:31:34.8405408Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:31:34.8405512Z               "line": 273
2026-06-21T03:31:34.8405627Z             },
2026-06-21T03:31:34.8405732Z             {
2026-06-21T03:31:34.8405889Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.8405995Z               "line": 355
2026-06-21T03:31:34.8406099Z             },
2026-06-21T03:31:34.8406207Z             {
2026-06-21T03:31:34.8406350Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:31:34.8406458Z               "line": 392
2026-06-21T03:31:34.8406562Z             },
2026-06-21T03:31:34.8406677Z             {
2026-06-21T03:31:34.8406830Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T03:31:34.8406944Z               "line": 131
2026-06-21T03:31:34.8407064Z             },
2026-06-21T03:31:34.8407163Z             {
2026-06-21T03:31:34.8407317Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.8407426Z               "line": 72
2026-06-21T03:31:34.8407525Z             },
2026-06-21T03:31:34.8407622Z             {
2026-06-21T03:31:34.8407765Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:31:34.8407879Z               "line": 97
2026-06-21T03:31:34.8408088Z             },
2026-06-21T03:31:34.8408189Z             {
2026-06-21T03:31:34.8408328Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8408442Z               "line": 379
2026-06-21T03:31:34.8408548Z             },
2026-06-21T03:31:34.8408643Z             {
2026-06-21T03:31:34.8408788Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8408889Z               "line": 417
2026-06-21T03:31:34.8409086Z             },
2026-06-21T03:31:34.8409187Z             {
2026-06-21T03:31:34.8409331Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8409458Z               "line": 433
2026-06-21T03:31:34.8409660Z             },
2026-06-21T03:31:34.8409763Z             {
2026-06-21T03:31:34.8409893Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8410007Z               "line": 472
2026-06-21T03:31:34.8410111Z             },
2026-06-21T03:31:34.8410217Z             {
2026-06-21T03:31:34.8410359Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8410465Z               "line": 489
2026-06-21T03:31:34.8410570Z             },
2026-06-21T03:31:34.8410665Z             {
2026-06-21T03:31:34.8410795Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8410903Z               "line": 517
2026-06-21T03:31:34.8411008Z             },
2026-06-21T03:31:34.8411109Z             {
2026-06-21T03:31:34.8411242Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:31:34.8411361Z               "line": 548
2026-06-21T03:31:34.8411467Z             },
2026-06-21T03:31:34.8411575Z             {
2026-06-21T03:31:34.8411722Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8411828Z               "line": 745
2026-06-21T03:31:34.8411937Z             }
2026-06-21T03:31:34.8412041Z           ]
2026-06-21T03:31:34.8412147Z         }
2026-06-21T03:31:34.8412251Z       }
2026-06-21T03:31:34.8412356Z     },
2026-06-21T03:31:34.8412457Z     {
2026-06-21T03:31:34.8412580Z       "id": "REQ-NOTIF-2",
2026-06-21T03:31:34.8412877Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T03:31:34.8412985Z       "requiredStages": [
2026-06-21T03:31:34.8413092Z         "doc",
2026-06-21T03:31:34.8413196Z         "impl",
2026-06-21T03:31:34.8413310Z         "unit",
2026-06-21T03:31:34.8413416Z         "int"
2026-06-21T03:31:34.8413519Z       ],
2026-06-21T03:31:34.8413625Z       "stages": {
2026-06-21T03:31:34.8413722Z         "doc": {
2026-06-21T03:31:34.8413839Z           "complete": true,
2026-06-21T03:31:34.8413947Z           "evidence": [
2026-06-21T03:31:34.8414053Z             {
2026-06-21T03:31:34.8414165Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8414284Z               "line": 509
2026-06-21T03:31:34.8414390Z             },
2026-06-21T03:31:34.8414494Z             {
2026-06-21T03:31:34.8414623Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8414738Z               "line": 123
2026-06-21T03:31:34.8414847Z             }
2026-06-21T03:31:34.8414952Z           ]
2026-06-21T03:31:34.8415052Z         },
2026-06-21T03:31:34.8415161Z         "impl": {
2026-06-21T03:31:34.8415267Z           "complete": true,
2026-06-21T03:31:34.8415376Z           "evidence": [
2026-06-21T03:31:34.8415476Z             {
2026-06-21T03:31:34.8415611Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8415719Z               "line": 287
2026-06-21T03:31:34.8415824Z             },
2026-06-21T03:31:34.8415935Z             {
2026-06-21T03:31:34.8416067Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8416187Z               "line": 301
2026-06-21T03:31:34.8416297Z             },
2026-06-21T03:31:34.8416406Z             {
2026-06-21T03:31:34.8416545Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8416664Z               "line": 326
2026-06-21T03:31:34.8416767Z             },
2026-06-21T03:31:34.8416976Z             {
2026-06-21T03:31:34.8417136Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8417247Z               "line": 239
2026-06-21T03:31:34.8417361Z             },
2026-06-21T03:31:34.8417461Z             {
2026-06-21T03:31:34.8417614Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8417728Z               "line": 95
2026-06-21T03:31:34.8417829Z             },
2026-06-21T03:31:34.8417934Z             {
2026-06-21T03:31:34.8418062Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8418168Z               "line": 2225
2026-06-21T03:31:34.8418272Z             },
2026-06-21T03:31:34.8418449Z             {
2026-06-21T03:31:34.8418582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8418692Z               "line": 2274
2026-06-21T03:31:34.8418798Z             },
2026-06-21T03:31:34.8418902Z             {
2026-06-21T03:31:34.8419108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8419207Z               "line": 2353
2026-06-21T03:31:34.8419315Z             },
2026-06-21T03:31:34.8419434Z             {
2026-06-21T03:31:34.8419557Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8419670Z               "line": 2392
2026-06-21T03:31:34.8419771Z             }
2026-06-21T03:31:34.8419877Z           ]
2026-06-21T03:31:34.8419984Z         },
2026-06-21T03:31:34.8420091Z         "int": {
2026-06-21T03:31:34.8420210Z           "complete": true,
2026-06-21T03:31:34.8420309Z           "evidence": [
2026-06-21T03:31:34.8420410Z             {
2026-06-21T03:31:34.8420553Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8420676Z               "line": 810
2026-06-21T03:31:34.8420787Z             },
2026-06-21T03:31:34.8420882Z             {
2026-06-21T03:31:34.8421030Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8421130Z               "line": 1345
2026-06-21T03:31:34.8421239Z             }
2026-06-21T03:31:34.8421345Z           ]
2026-06-21T03:31:34.8421459Z         },
2026-06-21T03:31:34.8421563Z         "unit": {
2026-06-21T03:31:34.8421675Z           "complete": true,
2026-06-21T03:31:34.8421778Z           "evidence": [
2026-06-21T03:31:34.8421883Z             {
2026-06-21T03:31:34.8422027Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8422140Z               "line": 1022
2026-06-21T03:31:34.8422239Z             },
2026-06-21T03:31:34.8422344Z             {
2026-06-21T03:31:34.8422478Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8422582Z               "line": 1090
2026-06-21T03:31:34.8422689Z             },
2026-06-21T03:31:34.8422802Z             {
2026-06-21T03:31:34.8422931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8423041Z               "line": 8210
2026-06-21T03:31:34.8423141Z             },
2026-06-21T03:31:34.8423246Z             {
2026-06-21T03:31:34.8423379Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8423483Z               "line": 8265
2026-06-21T03:31:34.8423599Z             }
2026-06-21T03:31:34.8423694Z           ]
2026-06-21T03:31:34.8423798Z         }
2026-06-21T03:31:34.8423895Z       }
2026-06-21T03:31:34.8424000Z     },
2026-06-21T03:31:34.8424104Z     {
2026-06-21T03:31:34.8424224Z       "id": "REQ-PAIR-1",
2026-06-21T03:31:34.8424361Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T03:31:34.8424470Z       "requiredStages": [
2026-06-21T03:31:34.8424575Z         "impl",
2026-06-21T03:31:34.8424678Z         "unit",
2026-06-21T03:31:34.8424783Z         "int"
2026-06-21T03:31:34.8424877Z       ],
2026-06-21T03:31:34.8424989Z       "stages": {
2026-06-21T03:31:34.8425097Z         "doc": {
2026-06-21T03:31:34.8425207Z           "complete": false,
2026-06-21T03:31:34.8425322Z           "evidence": []
2026-06-21T03:31:34.8425421Z         },
2026-06-21T03:31:34.8425527Z         "impl": {
2026-06-21T03:31:34.8425641Z           "complete": true,
2026-06-21T03:31:34.8425750Z           "evidence": [
2026-06-21T03:31:34.8425956Z             {
2026-06-21T03:31:34.8426117Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8426223Z               "line": 27
2026-06-21T03:31:34.8426332Z             },
2026-06-21T03:31:34.8426432Z             {
2026-06-21T03:31:34.8426589Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8426699Z               "line": 88
2026-06-21T03:31:34.8426810Z             },
2026-06-21T03:31:34.8426909Z             {
2026-06-21T03:31:34.8427067Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8427173Z               "line": 110
2026-06-21T03:31:34.8427370Z             },
2026-06-21T03:31:34.8427466Z             {
2026-06-21T03:31:34.8427626Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8427726Z               "line": 153
2026-06-21T03:31:34.8427827Z             },
2026-06-21T03:31:34.8427931Z             {
2026-06-21T03:31:34.8428084Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8428194Z               "line": 182
2026-06-21T03:31:34.8428298Z             },
2026-06-21T03:31:34.8428404Z             {
2026-06-21T03:31:34.8428556Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8428665Z               "line": 29
2026-06-21T03:31:34.8428766Z             },
2026-06-21T03:31:34.8428870Z             {
2026-06-21T03:31:34.8429123Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:31:34.8429232Z               "line": 31
2026-06-21T03:31:34.8429338Z             },
2026-06-21T03:31:34.8429457Z             {
2026-06-21T03:31:34.8429609Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8429729Z               "line": 44
2026-06-21T03:31:34.8429843Z             },
2026-06-21T03:31:34.8429942Z             {
2026-06-21T03:31:34.8430094Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8430206Z               "line": 171
2026-06-21T03:31:34.8430302Z             },
2026-06-21T03:31:34.8430408Z             {
2026-06-21T03:31:34.8430564Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8430675Z               "line": 376
2026-06-21T03:31:34.8430770Z             }
2026-06-21T03:31:34.8430878Z           ]
2026-06-21T03:31:34.8430980Z         },
2026-06-21T03:31:34.8431084Z         "int": {
2026-06-21T03:31:34.8431207Z           "complete": true,
2026-06-21T03:31:34.8431313Z           "evidence": [
2026-06-21T03:31:34.8431422Z             {
2026-06-21T03:31:34.8431570Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8431690Z               "line": 645
2026-06-21T03:31:34.8431795Z             },
2026-06-21T03:31:34.8431905Z             {
2026-06-21T03:31:34.8432057Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8432157Z               "line": 887
2026-06-21T03:31:34.8432263Z             }
2026-06-21T03:31:34.8432371Z           ]
2026-06-21T03:31:34.8432476Z         },
2026-06-21T03:31:34.8432578Z         "unit": {
2026-06-21T03:31:34.8432700Z           "complete": true,
2026-06-21T03:31:34.8432799Z           "evidence": [
2026-06-21T03:31:34.8432904Z             {
2026-06-21T03:31:34.8433066Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8433171Z               "line": 236
2026-06-21T03:31:34.8433277Z             },
2026-06-21T03:31:34.8433381Z             {
2026-06-21T03:31:34.8433525Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:31:34.8433639Z               "line": 349
2026-06-21T03:31:34.8433729Z             },
2026-06-21T03:31:34.8433840Z             {
2026-06-21T03:31:34.8433992Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8434101Z               "line": 194
2026-06-21T03:31:34.8434198Z             },
2026-06-21T03:31:34.8434306Z             {
2026-06-21T03:31:34.8434455Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8434659Z               "line": 216
2026-06-21T03:31:34.8434769Z             },
2026-06-21T03:31:34.8434870Z             {
2026-06-21T03:31:34.8435030Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8435130Z               "line": 230
2026-06-21T03:31:34.8435230Z             },
2026-06-21T03:31:34.8435328Z             {
2026-06-21T03:31:34.8435471Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8435595Z               "line": 242
2026-06-21T03:31:34.8435700Z             },
2026-06-21T03:31:34.8435806Z             {
2026-06-21T03:31:34.8435957Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8436167Z               "line": 256
2026-06-21T03:31:34.8436281Z             },
2026-06-21T03:31:34.8436387Z             {
2026-06-21T03:31:34.8436545Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8436654Z               "line": 270
2026-06-21T03:31:34.8436769Z             },
2026-06-21T03:31:34.8436874Z             {
2026-06-21T03:31:34.8437017Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8437126Z               "line": 277
2026-06-21T03:31:34.8437226Z             },
2026-06-21T03:31:34.8437337Z             {
2026-06-21T03:31:34.8437483Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:31:34.8437588Z               "line": 295
2026-06-21T03:31:34.8437690Z             },
2026-06-21T03:31:34.8437793Z             {
2026-06-21T03:31:34.8437949Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8438060Z               "line": 968
2026-06-21T03:31:34.8438176Z             },
2026-06-21T03:31:34.8438276Z             {
2026-06-21T03:31:34.8438430Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8438543Z               "line": 1051
2026-06-21T03:31:34.8438639Z             },
2026-06-21T03:31:34.8438749Z             {
2026-06-21T03:31:34.8438891Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8439088Z               "line": 1121
2026-06-21T03:31:34.8439187Z             },
2026-06-21T03:31:34.8439288Z             {
2026-06-21T03:31:34.8439440Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8439549Z               "line": 1182
2026-06-21T03:31:34.8439660Z             },
2026-06-21T03:31:34.8439759Z             {
2026-06-21T03:31:34.8439908Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8440012Z               "line": 1238
2026-06-21T03:31:34.8440122Z             },
2026-06-21T03:31:34.8440228Z             {
2026-06-21T03:31:34.8440374Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8440482Z               "line": 1457
2026-06-21T03:31:34.8440588Z             }
2026-06-21T03:31:34.8440696Z           ]
2026-06-21T03:31:34.8440804Z         }
2026-06-21T03:31:34.8440910Z       }
2026-06-21T03:31:34.8441015Z     },
2026-06-21T03:31:34.8441119Z     {
2026-06-21T03:31:34.8441239Z       "id": "REQ-PAIR-2",
2026-06-21T03:31:34.8441401Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T03:31:34.8441526Z       "requiredStages": [],
2026-06-21T03:31:34.8441635Z       "stages": {
2026-06-21T03:31:34.8441744Z         "doc": {
2026-06-21T03:31:34.8441874Z           "complete": false,
2026-06-21T03:31:34.8441978Z           "evidence": []
2026-06-21T03:31:34.8442078Z         },
2026-06-21T03:31:34.8442180Z         "impl": {
2026-06-21T03:31:34.8442293Z           "complete": false,
2026-06-21T03:31:34.8442407Z           "evidence": []
2026-06-21T03:31:34.8442518Z         },
2026-06-21T03:31:34.8442617Z         "int": {
2026-06-21T03:31:34.8442726Z           "complete": false,
2026-06-21T03:31:34.8442837Z           "evidence": []
2026-06-21T03:31:34.8442941Z         },
2026-06-21T03:31:34.8443051Z         "unit": {
2026-06-21T03:31:34.8443157Z           "complete": false,
2026-06-21T03:31:34.8443388Z           "evidence": []
2026-06-21T03:31:34.8443499Z         }
2026-06-21T03:31:34.8443598Z       }
2026-06-21T03:31:34.8443703Z     },
2026-06-21T03:31:34.8443809Z     {
2026-06-21T03:31:34.8443923Z       "id": "REQ-PAIR-3",
2026-06-21T03:31:34.8444095Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T03:31:34.8444214Z       "requiredStages": [
2026-06-21T03:31:34.8444327Z         "impl",
2026-06-21T03:31:34.8444428Z         "unit"
2026-06-21T03:31:34.8444542Z       ],
2026-06-21T03:31:34.8444647Z       "stages": {
2026-06-21T03:31:34.8444758Z         "doc": {
2026-06-21T03:31:34.8444866Z           "complete": false,
2026-06-21T03:31:34.8445077Z           "evidence": []
2026-06-21T03:31:34.8445186Z         },
2026-06-21T03:31:34.8445291Z         "impl": {
2026-06-21T03:31:34.8445411Z           "complete": true,
2026-06-21T03:31:34.8445510Z           "evidence": [
2026-06-21T03:31:34.8445619Z             {
2026-06-21T03:31:34.8445752Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8445874Z               "line": 3259
2026-06-21T03:31:34.8445984Z             },
2026-06-21T03:31:34.8446089Z             {
2026-06-21T03:31:34.8446217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8446327Z               "line": 3328
2026-06-21T03:31:34.8446432Z             },
2026-06-21T03:31:34.8446536Z             {
2026-06-21T03:31:34.8446662Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8446776Z               "line": 3709
2026-06-21T03:31:34.8446880Z             },
2026-06-21T03:31:34.8446986Z             {
2026-06-21T03:31:34.8447114Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8447228Z               "line": 4961
2026-06-21T03:31:34.8447329Z             }
2026-06-21T03:31:34.8447439Z           ]
2026-06-21T03:31:34.8447543Z         },
2026-06-21T03:31:34.8447644Z         "int": {
2026-06-21T03:31:34.8447752Z           "complete": false,
2026-06-21T03:31:34.8447858Z           "evidence": []
2026-06-21T03:31:34.8447964Z         },
2026-06-21T03:31:34.8448071Z         "unit": {
2026-06-21T03:31:34.8448187Z           "complete": true,
2026-06-21T03:31:34.8448293Z           "evidence": [
2026-06-21T03:31:34.8448400Z             {
2026-06-21T03:31:34.8448534Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8448638Z               "line": 9964
2026-06-21T03:31:34.8448746Z             },
2026-06-21T03:31:34.8448851Z             {
2026-06-21T03:31:34.8449070Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8449185Z               "line": 10179
2026-06-21T03:31:34.8449280Z             },
2026-06-21T03:31:34.8449408Z             {
2026-06-21T03:31:34.8449534Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8449653Z               "line": 10838
2026-06-21T03:31:34.8449747Z             },
2026-06-21T03:31:34.8449858Z             {
2026-06-21T03:31:34.8449986Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8450091Z               "line": 10857
2026-06-21T03:31:34.8450202Z             },
2026-06-21T03:31:34.8450305Z             {
2026-06-21T03:31:34.8450429Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8450535Z               "line": 10881
2026-06-21T03:31:34.8450634Z             },
2026-06-21T03:31:34.8450744Z             {
2026-06-21T03:31:34.8450869Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8450977Z               "line": 10900
2026-06-21T03:31:34.8451076Z             },
2026-06-21T03:31:34.8451181Z             {
2026-06-21T03:31:34.8451308Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8451418Z               "line": 10913
2026-06-21T03:31:34.8451528Z             },
2026-06-21T03:31:34.8451632Z             {
2026-06-21T03:31:34.8451761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8451866Z               "line": 10922
2026-06-21T03:31:34.8451970Z             }
2026-06-21T03:31:34.8452071Z           ]
2026-06-21T03:31:34.8452181Z         }
2026-06-21T03:31:34.8452391Z       }
2026-06-21T03:31:34.8452495Z     },
2026-06-21T03:31:34.8452604Z     {
2026-06-21T03:31:34.8452720Z       "id": "REQ-PAIR-4",
2026-06-21T03:31:34.8452863Z       "title": "Subnet naming on first pairing",
2026-06-21T03:31:34.8452972Z       "requiredStages": [
2026-06-21T03:31:34.8453087Z         "impl",
2026-06-21T03:31:34.8453186Z         "unit"
2026-06-21T03:31:34.8453287Z       ],
2026-06-21T03:31:34.8453398Z       "stages": {
2026-06-21T03:31:34.8453506Z         "doc": {
2026-06-21T03:31:34.8453621Z           "complete": false,
2026-06-21T03:31:34.8453736Z           "evidence": []
2026-06-21T03:31:34.8453849Z         },
2026-06-21T03:31:34.8453958Z         "impl": {
2026-06-21T03:31:34.8454168Z           "complete": true,
2026-06-21T03:31:34.8454277Z           "evidence": [
2026-06-21T03:31:34.8454374Z             {
2026-06-21T03:31:34.8454525Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:31:34.8454636Z               "line": 174
2026-06-21T03:31:34.8454745Z             }
2026-06-21T03:31:34.8454859Z           ]
2026-06-21T03:31:34.8454950Z         },
2026-06-21T03:31:34.8455060Z         "int": {
2026-06-21T03:31:34.8455179Z           "complete": false,
2026-06-21T03:31:34.8455285Z           "evidence": []
2026-06-21T03:31:34.8455389Z         },
2026-06-21T03:31:34.8455503Z         "unit": {
2026-06-21T03:31:34.8455614Z           "complete": true,
2026-06-21T03:31:34.8455722Z           "evidence": [
2026-06-21T03:31:34.8455827Z             {
2026-06-21T03:31:34.8455981Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8456089Z               "line": 1294
2026-06-21T03:31:34.8456193Z             }
2026-06-21T03:31:34.8456308Z           ]
2026-06-21T03:31:34.8456415Z         }
2026-06-21T03:31:34.8456515Z       }
2026-06-21T03:31:34.8456621Z     },
2026-06-21T03:31:34.8456721Z     {
2026-06-21T03:31:34.8456839Z       "id": "REQ-PAIR-5",
2026-06-21T03:31:34.8457168Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T03:31:34.8457298Z       "requiredStages": [
2026-06-21T03:31:34.8457402Z         "impl",
2026-06-21T03:31:34.8457508Z         "unit",
2026-06-21T03:31:34.8457613Z         "int"
2026-06-21T03:31:34.8457717Z       ],
2026-06-21T03:31:34.8457822Z       "stages": {
2026-06-21T03:31:34.8457927Z         "doc": {
2026-06-21T03:31:34.8458050Z           "complete": false,
2026-06-21T03:31:34.8458171Z           "evidence": []
2026-06-21T03:31:34.8458275Z         },
2026-06-21T03:31:34.8458384Z         "impl": {
2026-06-21T03:31:34.8458495Z           "complete": true,
2026-06-21T03:31:34.8458604Z           "evidence": [
2026-06-21T03:31:34.8458704Z             {
2026-06-21T03:31:34.8458858Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8459065Z               "line": 44
2026-06-21T03:31:34.8459175Z             },
2026-06-21T03:31:34.8459282Z             {
2026-06-21T03:31:34.8459440Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8459560Z               "line": 96
2026-06-21T03:31:34.8459668Z             },
2026-06-21T03:31:34.8459774Z             {
2026-06-21T03:31:34.8459940Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8460050Z               "line": 107
2026-06-21T03:31:34.8460160Z             },
2026-06-21T03:31:34.8460264Z             {
2026-06-21T03:31:34.8460418Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8460522Z               "line": 124
2026-06-21T03:31:34.8460627Z             },
2026-06-21T03:31:34.8460728Z             {
2026-06-21T03:31:34.8460874Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8460989Z               "line": 155
2026-06-21T03:31:34.8461081Z             },
2026-06-21T03:31:34.8461184Z             {
2026-06-21T03:31:34.8461344Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8461443Z               "line": 195
2026-06-21T03:31:34.8461646Z             },
2026-06-21T03:31:34.8461756Z             {
2026-06-21T03:31:34.8461906Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8462016Z               "line": 251
2026-06-21T03:31:34.8462122Z             },
2026-06-21T03:31:34.8462235Z             {
2026-06-21T03:31:34.8462407Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8462521Z               "line": 33
2026-06-21T03:31:34.8462627Z             },
2026-06-21T03:31:34.8462726Z             {
2026-06-21T03:31:34.8462898Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8463103Z               "line": 45
2026-06-21T03:31:34.8463212Z             },
2026-06-21T03:31:34.8463314Z             {
2026-06-21T03:31:34.8463489Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8463595Z               "line": 59
2026-06-21T03:31:34.8463699Z             },
2026-06-21T03:31:34.8463799Z             {
2026-06-21T03:31:34.8463958Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8464070Z               "line": 376
2026-06-21T03:31:34.8464167Z             }
2026-06-21T03:31:34.8464268Z           ]
2026-06-21T03:31:34.8464366Z         },
2026-06-21T03:31:34.8464470Z         "int": {
2026-06-21T03:31:34.8464576Z           "complete": true,
2026-06-21T03:31:34.8464690Z           "evidence": [
2026-06-21T03:31:34.8464799Z             {
2026-06-21T03:31:34.8464953Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8465066Z               "line": 887
2026-06-21T03:31:34.8465172Z             },
2026-06-21T03:31:34.8465277Z             {
2026-06-21T03:31:34.8465429Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8465545Z               "line": 342
2026-06-21T03:31:34.8465648Z             }
2026-06-21T03:31:34.8465748Z           ]
2026-06-21T03:31:34.8465854Z         },
2026-06-21T03:31:34.8465958Z         "unit": {
2026-06-21T03:31:34.8466082Z           "complete": true,
2026-06-21T03:31:34.8466188Z           "evidence": [
2026-06-21T03:31:34.8466296Z             {
2026-06-21T03:31:34.8466450Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8466559Z               "line": 293
2026-06-21T03:31:34.8466668Z             },
2026-06-21T03:31:34.8466767Z             {
2026-06-21T03:31:34.8466919Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8467027Z               "line": 304
2026-06-21T03:31:34.8467138Z             },
2026-06-21T03:31:34.8467243Z             {
2026-06-21T03:31:34.8467395Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.8467515Z               "line": 406
2026-06-21T03:31:34.8467624Z             },
2026-06-21T03:31:34.8467733Z             {
2026-06-21T03:31:34.8467901Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8468009Z               "line": 72
2026-06-21T03:31:34.8468120Z             },
2026-06-21T03:31:34.8468225Z             {
2026-06-21T03:31:34.8468392Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8468496Z               "line": 82
2026-06-21T03:31:34.8468606Z             },
2026-06-21T03:31:34.8468712Z             {
2026-06-21T03:31:34.8468863Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8469065Z               "line": 100
2026-06-21T03:31:34.8469173Z             },
2026-06-21T03:31:34.8469283Z             {
2026-06-21T03:31:34.8469451Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8469563Z               "line": 110
2026-06-21T03:31:34.8469668Z             },
2026-06-21T03:31:34.8469772Z             {
2026-06-21T03:31:34.8469933Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:31:34.8470038Z               "line": 125
2026-06-21T03:31:34.8470148Z             },
2026-06-21T03:31:34.8470358Z             {
2026-06-21T03:31:34.8470505Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8470620Z               "line": 1044
2026-06-21T03:31:34.8470725Z             },
2026-06-21T03:31:34.8470829Z             {
2026-06-21T03:31:34.8470973Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8471091Z               "line": 1110
2026-06-21T03:31:34.8471191Z             },
2026-06-21T03:31:34.8471298Z             {
2026-06-21T03:31:34.8471449Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.8471559Z               "line": 1357
2026-06-21T03:31:34.8471670Z             }
2026-06-21T03:31:34.8471879Z           ]
2026-06-21T03:31:34.8471994Z         }
2026-06-21T03:31:34.8472092Z       }
2026-06-21T03:31:34.8472191Z     },
2026-06-21T03:31:34.8472292Z     {
2026-06-21T03:31:34.8472404Z       "id": "REQ-PAIR-6",
2026-06-21T03:31:34.8472705Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T03:31:34.8472814Z       "requiredStages": [
2026-06-21T03:31:34.8472925Z         "impl",
2026-06-21T03:31:34.8473030Z         "unit"
2026-06-21T03:31:34.8473129Z       ],
2026-06-21T03:31:34.8476528Z       "stages": {
2026-06-21T03:31:34.8476676Z         "doc": {
2026-06-21T03:31:34.8476805Z           "complete": false,
2026-06-21T03:31:34.8476919Z           "evidence": []
2026-06-21T03:31:34.8477034Z         },
2026-06-21T03:31:34.8477139Z         "impl": {
2026-06-21T03:31:34.8477247Z           "complete": true,
2026-06-21T03:31:34.8477361Z           "evidence": [
2026-06-21T03:31:34.8477460Z             {
2026-06-21T03:31:34.8477616Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8477722Z               "line": 3328
2026-06-21T03:31:34.8477831Z             },
2026-06-21T03:31:34.8477940Z             {
2026-06-21T03:31:34.8478075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8478184Z               "line": 3709
2026-06-21T03:31:34.8478294Z             },
2026-06-21T03:31:34.8478404Z             {
2026-06-21T03:31:34.8478551Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.8478662Z               "line": 18
2026-06-21T03:31:34.8478771Z             },
2026-06-21T03:31:34.8478875Z             {
2026-06-21T03:31:34.8479085Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.8479194Z               "line": 49
2026-06-21T03:31:34.8479306Z             },
2026-06-21T03:31:34.8479419Z             {
2026-06-21T03:31:34.8479553Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.8479663Z               "line": 318
2026-06-21T03:31:34.8479762Z             }
2026-06-21T03:31:34.8479868Z           ]
2026-06-21T03:31:34.8479973Z         },
2026-06-21T03:31:34.8480077Z         "int": {
2026-06-21T03:31:34.8480190Z           "complete": false,
2026-06-21T03:31:34.8480304Z           "evidence": []
2026-06-21T03:31:34.8480403Z         },
2026-06-21T03:31:34.8480502Z         "unit": {
2026-06-21T03:31:34.8480623Z           "complete": true,
2026-06-21T03:31:34.8480727Z           "evidence": [
2026-06-21T03:31:34.8480836Z             {
2026-06-21T03:31:34.8480971Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8481084Z               "line": 10935
2026-06-21T03:31:34.8481185Z             },
2026-06-21T03:31:34.8481290Z             {
2026-06-21T03:31:34.8481422Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8481529Z               "line": 10952
2026-06-21T03:31:34.8481638Z             },
2026-06-21T03:31:34.8481737Z             {
2026-06-21T03:31:34.8481882Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.8481994Z               "line": 383
2026-06-21T03:31:34.8482095Z             },
2026-06-21T03:31:34.8482206Z             {
2026-06-21T03:31:34.8482338Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:31:34.8482454Z               "line": 392
2026-06-21T03:31:34.8482559Z             }
2026-06-21T03:31:34.8482795Z           ]
2026-06-21T03:31:34.8482909Z         }
2026-06-21T03:31:34.8483007Z       }
2026-06-21T03:31:34.8483113Z     },
2026-06-21T03:31:34.8483213Z     {
2026-06-21T03:31:34.8483331Z       "id": "REQ-PAIR-7",
2026-06-21T03:31:34.8483523Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T03:31:34.8483650Z       "requiredStages": [],
2026-06-21T03:31:34.8483757Z       "stages": {
2026-06-21T03:31:34.8483861Z         "doc": {
2026-06-21T03:31:34.8483979Z           "complete": false,
2026-06-21T03:31:34.8484086Z           "evidence": []
2026-06-21T03:31:34.8484199Z         },
2026-06-21T03:31:34.8484299Z         "impl": {
2026-06-21T03:31:34.8484519Z           "complete": false,
2026-06-21T03:31:34.8484633Z           "evidence": []
2026-06-21T03:31:34.8484730Z         },
2026-06-21T03:31:34.8484834Z         "int": {
2026-06-21T03:31:34.8484948Z           "complete": false,
2026-06-21T03:31:34.8485059Z           "evidence": []
2026-06-21T03:31:34.8485163Z         },
2026-06-21T03:31:34.8485277Z         "unit": {
2026-06-21T03:31:34.8485388Z           "complete": false,
2026-06-21T03:31:34.8485496Z           "evidence": []
2026-06-21T03:31:34.8485605Z         }
2026-06-21T03:31:34.8485705Z       }
2026-06-21T03:31:34.8485816Z     },
2026-06-21T03:31:34.8485915Z     {
2026-06-21T03:31:34.8486035Z       "id": "REQ-PAIR-8",
2026-06-21T03:31:34.8487512Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T03:31:34.8487652Z       "requiredStages": [
2026-06-21T03:31:34.8487765Z         "impl",
2026-06-21T03:31:34.8487868Z         "unit"
2026-06-21T03:31:34.8487979Z       ],
2026-06-21T03:31:34.8488100Z       "stages": {
2026-06-21T03:31:34.8488205Z         "doc": {
2026-06-21T03:31:34.8488325Z           "complete": false,
2026-06-21T03:31:34.8488434Z           "evidence": []
2026-06-21T03:31:34.8488539Z         },
2026-06-21T03:31:34.8488645Z         "impl": {
2026-06-21T03:31:34.8488753Z           "complete": true,
2026-06-21T03:31:34.8488873Z           "evidence": [
2026-06-21T03:31:34.8489063Z             {
2026-06-21T03:31:34.8489227Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.8489336Z               "line": 577
2026-06-21T03:31:34.8489445Z             },
2026-06-21T03:31:34.8489551Z             {
2026-06-21T03:31:34.8489721Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8489827Z               "line": 22
2026-06-21T03:31:34.8489931Z             },
2026-06-21T03:31:34.8490036Z             {
2026-06-21T03:31:34.8490186Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8490293Z               "line": 76
2026-06-21T03:31:34.8490394Z             },
2026-06-21T03:31:34.8490505Z             {
2026-06-21T03:31:34.8490655Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8490765Z               "line": 127
2026-06-21T03:31:34.8490874Z             }
2026-06-21T03:31:34.8490982Z           ]
2026-06-21T03:31:34.8491087Z         },
2026-06-21T03:31:34.8491188Z         "int": {
2026-06-21T03:31:34.8491311Z           "complete": false,
2026-06-21T03:31:34.8491411Z           "evidence": []
2026-06-21T03:31:34.8491512Z         },
2026-06-21T03:31:34.8491625Z         "unit": {
2026-06-21T03:31:34.8491735Z           "complete": true,
2026-06-21T03:31:34.8491845Z           "evidence": [
2026-06-21T03:31:34.8491949Z             {
2026-06-21T03:31:34.8492099Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8492217Z               "line": 183
2026-06-21T03:31:34.8492312Z             },
2026-06-21T03:31:34.8492423Z             {
2026-06-21T03:31:34.8492675Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8492780Z               "line": 195
2026-06-21T03:31:34.8492884Z             },
2026-06-21T03:31:34.8493000Z             {
2026-06-21T03:31:34.8493147Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8493250Z               "line": 211
2026-06-21T03:31:34.8493360Z             },
2026-06-21T03:31:34.8493455Z             {
2026-06-21T03:31:34.8493610Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:31:34.8493711Z               "line": 227
2026-06-21T03:31:34.8493816Z             }
2026-06-21T03:31:34.8493925Z           ]
2026-06-21T03:31:34.8494121Z         }
2026-06-21T03:31:34.8494230Z       }
2026-06-21T03:31:34.8494331Z     },
2026-06-21T03:31:34.8494435Z     {
2026-06-21T03:31:34.8494544Z       "id": "REQ-PICKER-1",
2026-06-21T03:31:34.8498179Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T03:31:34.8498339Z       "requiredStages": [
2026-06-21T03:31:34.8498443Z         "impl",
2026-06-21T03:31:34.8498548Z         "unit"
2026-06-21T03:31:34.8498646Z       ],
2026-06-21T03:31:34.8498750Z       "stages": {
2026-06-21T03:31:34.8498861Z         "doc": {
2026-06-21T03:31:34.8499051Z           "complete": false,
2026-06-21T03:31:34.8499157Z           "evidence": []
2026-06-21T03:31:34.8499257Z         },
2026-06-21T03:31:34.8499366Z         "impl": {
2026-06-21T03:31:34.8499491Z           "complete": true,
2026-06-21T03:31:34.8499604Z           "evidence": [
2026-06-21T03:31:34.8499724Z             {
2026-06-21T03:31:34.8499877Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8499981Z               "line": 248
2026-06-21T03:31:34.8500087Z             },
2026-06-21T03:31:34.8500181Z             {
2026-06-21T03:31:34.8500329Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8500440Z               "line": 263
2026-06-21T03:31:34.8500543Z             }
2026-06-21T03:31:34.8500654Z           ]
2026-06-21T03:31:34.8500755Z         },
2026-06-21T03:31:34.8500868Z         "int": {
2026-06-21T03:31:34.8500973Z           "complete": false,
2026-06-21T03:31:34.8501094Z           "evidence": []
2026-06-21T03:31:34.8501192Z         },
2026-06-21T03:31:34.8501296Z         "unit": {
2026-06-21T03:31:34.8501415Z           "complete": true,
2026-06-21T03:31:34.8501518Z           "evidence": [
2026-06-21T03:31:34.8501622Z             {
2026-06-21T03:31:34.8501767Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.8501890Z               "line": 476
2026-06-21T03:31:34.8501990Z             },
2026-06-21T03:31:34.8502095Z             {
2026-06-21T03:31:34.8502247Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8502358Z               "line": 753
2026-06-21T03:31:34.8502467Z             },
2026-06-21T03:31:34.8502571Z             {
2026-06-21T03:31:34.8502824Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8502935Z               "line": 886
2026-06-21T03:31:34.8503049Z             },
2026-06-21T03:31:34.8503153Z             {
2026-06-21T03:31:34.8503293Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8503401Z               "line": 455
2026-06-21T03:31:34.8503507Z             }
2026-06-21T03:31:34.8503613Z           ]
2026-06-21T03:31:34.8503712Z         }
2026-06-21T03:31:34.8503820Z       }
2026-06-21T03:31:34.8503920Z     },
2026-06-21T03:31:34.8504024Z     {
2026-06-21T03:31:34.8504141Z       "id": "REQ-PICKER-2",
2026-06-21T03:31:34.8506250Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T03:31:34.8506392Z       "requiredStages": [
2026-06-21T03:31:34.8506499Z         "impl",
2026-06-21T03:31:34.8506607Z         "unit"
2026-06-21T03:31:34.8506711Z       ],
2026-06-21T03:31:34.8506821Z       "stages": {
2026-06-21T03:31:34.8506927Z         "doc": {
2026-06-21T03:31:34.8507040Z           "complete": false,
2026-06-21T03:31:34.8507145Z           "evidence": []
2026-06-21T03:31:34.8507260Z         },
2026-06-21T03:31:34.8507364Z         "impl": {
2026-06-21T03:31:34.8507475Z           "complete": true,
2026-06-21T03:31:34.8507589Z           "evidence": [
2026-06-21T03:31:34.8507698Z             {
2026-06-21T03:31:34.8507861Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8507969Z               "line": 183
2026-06-21T03:31:34.8508085Z             },
2026-06-21T03:31:34.8508189Z             {
2026-06-21T03:31:34.8508327Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8508443Z               "line": 296
2026-06-21T03:31:34.8508542Z             }
2026-06-21T03:31:34.8508642Z           ]
2026-06-21T03:31:34.8508734Z         },
2026-06-21T03:31:34.8508847Z         "int": {
2026-06-21T03:31:34.8509042Z           "complete": false,
2026-06-21T03:31:34.8509160Z           "evidence": []
2026-06-21T03:31:34.8509268Z         },
2026-06-21T03:31:34.8509373Z         "unit": {
2026-06-21T03:31:34.8509493Z           "complete": true,
2026-06-21T03:31:34.8509607Z           "evidence": [
2026-06-21T03:31:34.8509717Z             {
2026-06-21T03:31:34.8509864Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.8509969Z               "line": 655
2026-06-21T03:31:34.8510079Z             }
2026-06-21T03:31:34.8510183Z           ]
2026-06-21T03:31:34.8510294Z         }
2026-06-21T03:31:34.8510394Z       }
2026-06-21T03:31:34.8510498Z     },
2026-06-21T03:31:34.8510603Z     {
2026-06-21T03:31:34.8510728Z       "id": "REQ-PICKER-3",
2026-06-21T03:31:34.8513252Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T03:31:34.8513504Z       "requiredStages": [
2026-06-21T03:31:34.8513614Z         "impl",
2026-06-21T03:31:34.8513723Z         "unit"
2026-06-21T03:31:34.8513824Z       ],
2026-06-21T03:31:34.8513929Z       "stages": {
2026-06-21T03:31:34.8514033Z         "doc": {
2026-06-21T03:31:34.8514139Z           "complete": false,
2026-06-21T03:31:34.8514248Z           "evidence": []
2026-06-21T03:31:34.8514357Z         },
2026-06-21T03:31:34.8514461Z         "impl": {
2026-06-21T03:31:34.8514570Z           "complete": true,
2026-06-21T03:31:34.8514679Z           "evidence": [
2026-06-21T03:31:34.8514788Z             {
2026-06-21T03:31:34.8514927Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8515156Z               "line": 124
2026-06-21T03:31:34.8515261Z             }
2026-06-21T03:31:34.8515364Z           ]
2026-06-21T03:31:34.8515466Z         },
2026-06-21T03:31:34.8515575Z         "int": {
2026-06-21T03:31:34.8515693Z           "complete": false,
2026-06-21T03:31:34.8515804Z           "evidence": []
2026-06-21T03:31:34.8515908Z         },
2026-06-21T03:31:34.8516018Z         "unit": {
2026-06-21T03:31:34.8516138Z           "complete": true,
2026-06-21T03:31:34.8516247Z           "evidence": [
2026-06-21T03:31:34.8516357Z             {
2026-06-21T03:31:34.8516500Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8516609Z               "line": 369
2026-06-21T03:31:34.8516716Z             }
2026-06-21T03:31:34.8516819Z           ]
2026-06-21T03:31:34.8516920Z         }
2026-06-21T03:31:34.8517011Z       }
2026-06-21T03:31:34.8517106Z     },
2026-06-21T03:31:34.8517214Z     {
2026-06-21T03:31:34.8517319Z       "id": "REQ-PICKER-4",
2026-06-21T03:31:34.8519393Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T03:31:34.8519530Z       "requiredStages": [
2026-06-21T03:31:34.8519635Z         "impl",
2026-06-21T03:31:34.8519739Z         "unit"
2026-06-21T03:31:34.8519842Z       ],
2026-06-21T03:31:34.8519952Z       "stages": {
2026-06-21T03:31:34.8520054Z         "doc": {
2026-06-21T03:31:34.8520176Z           "complete": false,
2026-06-21T03:31:34.8520292Z           "evidence": []
2026-06-21T03:31:34.8520382Z         },
2026-06-21T03:31:34.8520491Z         "impl": {
2026-06-21T03:31:34.8520597Z           "complete": true,
2026-06-21T03:31:34.8520702Z           "evidence": [
2026-06-21T03:31:34.8520801Z             {
2026-06-21T03:31:34.8520950Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.8521059Z               "line": 353
2026-06-21T03:31:34.8521158Z             },
2026-06-21T03:31:34.8521269Z             {
2026-06-21T03:31:34.8521402Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8521513Z               "line": 105
2026-06-21T03:31:34.8521612Z             }
2026-06-21T03:31:34.8521717Z           ]
2026-06-21T03:31:34.8521828Z         },
2026-06-21T03:31:34.8521923Z         "int": {
2026-06-21T03:31:34.8522032Z           "complete": false,
2026-06-21T03:31:34.8522137Z           "evidence": []
2026-06-21T03:31:34.8522242Z         },
2026-06-21T03:31:34.8522350Z         "unit": {
2026-06-21T03:31:34.8522474Z           "complete": true,
2026-06-21T03:31:34.8522583Z           "evidence": [
2026-06-21T03:31:34.8522681Z             {
2026-06-21T03:31:34.8522834Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.8522949Z               "line": 1246
2026-06-21T03:31:34.8523164Z             },
2026-06-21T03:31:34.8523264Z             {
2026-06-21T03:31:34.8523411Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8523530Z               "line": 427
2026-06-21T03:31:34.8523630Z             }
2026-06-21T03:31:34.8523740Z           ]
2026-06-21T03:31:34.8523845Z         }
2026-06-21T03:31:34.8523949Z       }
2026-06-21T03:31:34.8524050Z     },
2026-06-21T03:31:34.8524160Z     {
2026-06-21T03:31:34.8524283Z       "id": "REQ-PICKER-5",
2026-06-21T03:31:34.8527398Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T03:31:34.8527629Z       "requiredStages": [
2026-06-21T03:31:34.8527732Z         "impl",
2026-06-21T03:31:34.8527840Z         "unit"
2026-06-21T03:31:34.8527946Z       ],
2026-06-21T03:31:34.8528051Z       "stages": {
2026-06-21T03:31:34.8528174Z         "doc": {
2026-06-21T03:31:34.8528285Z           "complete": false,
2026-06-21T03:31:34.8528390Z           "evidence": []
2026-06-21T03:31:34.8528503Z         },
2026-06-21T03:31:34.8528614Z         "impl": {
2026-06-21T03:31:34.8528723Z           "complete": true,
2026-06-21T03:31:34.8528828Z           "evidence": [
2026-06-21T03:31:34.8529023Z             {
2026-06-21T03:31:34.8529152Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8529267Z               "line": 1802
2026-06-21T03:31:34.8529391Z             }
2026-06-21T03:31:34.8529491Z           ]
2026-06-21T03:31:34.8529596Z         },
2026-06-21T03:31:34.8529705Z         "int": {
2026-06-21T03:31:34.8529825Z           "complete": false,
2026-06-21T03:31:34.8529948Z           "evidence": []
2026-06-21T03:31:34.8530052Z         },
2026-06-21T03:31:34.8530162Z         "unit": {
2026-06-21T03:31:34.8530275Z           "complete": true,
2026-06-21T03:31:34.8530388Z           "evidence": [
2026-06-21T03:31:34.8530484Z             {
2026-06-21T03:31:34.8530622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8530731Z               "line": 7526
2026-06-21T03:31:34.8530837Z             }
2026-06-21T03:31:34.8530951Z           ]
2026-06-21T03:31:34.8531046Z         }
2026-06-21T03:31:34.8531152Z       }
2026-06-21T03:31:34.8531252Z     },
2026-06-21T03:31:34.8531351Z     {
2026-06-21T03:31:34.8531496Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T03:31:34.8532943Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T03:31:34.8533081Z       "requiredStages": [],
2026-06-21T03:31:34.8533185Z       "stages": {
2026-06-21T03:31:34.8533289Z         "doc": {
2026-06-21T03:31:34.8533409Z           "complete": false,
2026-06-21T03:31:34.8533514Z           "evidence": []
2026-06-21T03:31:34.8533724Z         },
2026-06-21T03:31:34.8533833Z         "impl": {
2026-06-21T03:31:34.8533956Z           "complete": false,
2026-06-21T03:31:34.8534063Z           "evidence": []
2026-06-21T03:31:34.8534162Z         },
2026-06-21T03:31:34.8534276Z         "int": {
2026-06-21T03:31:34.8534382Z           "complete": false,
2026-06-21T03:31:34.8534496Z           "evidence": []
2026-06-21T03:31:34.8534591Z         },
2026-06-21T03:31:34.8534706Z         "unit": {
2026-06-21T03:31:34.8534810Z           "complete": false,
2026-06-21T03:31:34.8534910Z           "evidence": []
2026-06-21T03:31:34.8535016Z         }
2026-06-21T03:31:34.8535119Z       }
2026-06-21T03:31:34.8535317Z     },
2026-06-21T03:31:34.8535420Z     {
2026-06-21T03:31:34.8535557Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T03:31:34.8536733Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T03:31:34.8536867Z       "requiredStages": [
2026-06-21T03:31:34.8536976Z         "impl",
2026-06-21T03:31:34.8537071Z         "unit"
2026-06-21T03:31:34.8537167Z       ],
2026-06-21T03:31:34.8537272Z       "stages": {
2026-06-21T03:31:34.8537377Z         "doc": {
2026-06-21T03:31:34.8537497Z           "complete": false,
2026-06-21T03:31:34.8537611Z           "evidence": []
2026-06-21T03:31:34.8537720Z         },
2026-06-21T03:31:34.8537826Z         "impl": {
2026-06-21T03:31:34.8537949Z           "complete": true,
2026-06-21T03:31:34.8538059Z           "evidence": [
2026-06-21T03:31:34.8538160Z             {
2026-06-21T03:31:34.8538315Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8538419Z               "line": 275
2026-06-21T03:31:34.8538530Z             }
2026-06-21T03:31:34.8538639Z           ]
2026-06-21T03:31:34.8538744Z         },
2026-06-21T03:31:34.8538855Z         "int": {
2026-06-21T03:31:34.8539053Z           "complete": false,
2026-06-21T03:31:34.8539169Z           "evidence": []
2026-06-21T03:31:34.8539274Z         },
2026-06-21T03:31:34.8539388Z         "unit": {
2026-06-21T03:31:34.8539503Z           "complete": true,
2026-06-21T03:31:34.8539612Z           "evidence": [
2026-06-21T03:31:34.8539727Z             {
2026-06-21T03:31:34.8539856Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8539975Z               "line": 400
2026-06-21T03:31:34.8540071Z             }
2026-06-21T03:31:34.8540175Z           ]
2026-06-21T03:31:34.8540280Z         }
2026-06-21T03:31:34.8540385Z       }
2026-06-21T03:31:34.8540490Z     },
2026-06-21T03:31:34.8540593Z     {
2026-06-21T03:31:34.8540727Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T03:31:34.8542313Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T03:31:34.8542451Z       "requiredStages": [
2026-06-21T03:31:34.8542555Z         "impl",
2026-06-21T03:31:34.8542662Z         "unit"
2026-06-21T03:31:34.8542775Z       ],
2026-06-21T03:31:34.8542875Z       "stages": {
2026-06-21T03:31:34.8542995Z         "doc": {
2026-06-21T03:31:34.8543113Z           "complete": false,
2026-06-21T03:31:34.8543234Z           "evidence": []
2026-06-21T03:31:34.8543334Z         },
2026-06-21T03:31:34.8543428Z         "impl": {
2026-06-21T03:31:34.8543541Z           "complete": true,
2026-06-21T03:31:34.8543651Z           "evidence": [
2026-06-21T03:31:34.8543873Z             {
2026-06-21T03:31:34.8544016Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8544135Z               "line": 654
2026-06-21T03:31:34.8544241Z             }
2026-06-21T03:31:34.8544336Z           ]
2026-06-21T03:31:34.8544440Z         },
2026-06-21T03:31:34.8544541Z         "int": {
2026-06-21T03:31:34.8544651Z           "complete": false,
2026-06-21T03:31:34.8544760Z           "evidence": []
2026-06-21T03:31:34.8544860Z         },
2026-06-21T03:31:34.8544966Z         "unit": {
2026-06-21T03:31:34.8545065Z           "complete": true,
2026-06-21T03:31:34.8545185Z           "evidence": [
2026-06-21T03:31:34.8545380Z             {
2026-06-21T03:31:34.8545529Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8545638Z               "line": 1078
2026-06-21T03:31:34.8545742Z             },
2026-06-21T03:31:34.8545844Z             {
2026-06-21T03:31:34.8545985Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8546108Z               "line": 1092
2026-06-21T03:31:34.8546208Z             }
2026-06-21T03:31:34.8546316Z           ]
2026-06-21T03:31:34.8546416Z         }
2026-06-21T03:31:34.8546521Z       }
2026-06-21T03:31:34.8546631Z     },
2026-06-21T03:31:34.8546735Z     {
2026-06-21T03:31:34.8546856Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T03:31:34.8548495Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T03:31:34.8548633Z       "requiredStages": [],
2026-06-21T03:31:34.8548749Z       "stages": {
2026-06-21T03:31:34.8548857Z         "doc": {
2026-06-21T03:31:34.8549047Z           "complete": false,
2026-06-21T03:31:34.8549162Z           "evidence": []
2026-06-21T03:31:34.8549271Z         },
2026-06-21T03:31:34.8549396Z         "impl": {
2026-06-21T03:31:34.8549505Z           "complete": false,
2026-06-21T03:31:34.8549609Z           "evidence": []
2026-06-21T03:31:34.8549716Z         },
2026-06-21T03:31:34.8549825Z         "int": {
2026-06-21T03:31:34.8549933Z           "complete": false,
2026-06-21T03:31:34.8550040Z           "evidence": []
2026-06-21T03:31:34.8550149Z         },
2026-06-21T03:31:34.8550258Z         "unit": {
2026-06-21T03:31:34.8550383Z           "complete": false,
2026-06-21T03:31:34.8550497Z           "evidence": []
2026-06-21T03:31:34.8550597Z         }
2026-06-21T03:31:34.8550698Z       }
2026-06-21T03:31:34.8550806Z     },
2026-06-21T03:31:34.8550911Z     {
2026-06-21T03:31:34.8551027Z       "id": "REQ-PRES-1",
2026-06-21T03:31:34.8552429Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T03:31:34.8552544Z       "requiredStages": [
2026-06-21T03:31:34.8552654Z         "impl",
2026-06-21T03:31:34.8552772Z         "unit",
2026-06-21T03:31:34.8552873Z         "int"
2026-06-21T03:31:34.8552977Z       ],
2026-06-21T03:31:34.8553092Z       "stages": {
2026-06-21T03:31:34.8553193Z         "doc": {
2026-06-21T03:31:34.8553311Z           "complete": true,
2026-06-21T03:31:34.8553426Z           "evidence": [
2026-06-21T03:31:34.8553537Z             {
2026-06-21T03:31:34.8553664Z               "path": "docs/DEFERRED.md",
2026-06-21T03:31:34.8553774Z               "line": 11
2026-06-21T03:31:34.8553998Z             }
2026-06-21T03:31:34.8554106Z           ]
2026-06-21T03:31:34.8554211Z         },
2026-06-21T03:31:34.8554324Z         "impl": {
2026-06-21T03:31:34.8554438Z           "complete": true,
2026-06-21T03:31:34.8554553Z           "evidence": [
2026-06-21T03:31:34.8554653Z             {
2026-06-21T03:31:34.8554801Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8554910Z               "line": 515
2026-06-21T03:31:34.8555015Z             },
2026-06-21T03:31:34.8555126Z             {
2026-06-21T03:31:34.8555282Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8555502Z               "line": 567
2026-06-21T03:31:34.8555611Z             },
2026-06-21T03:31:34.8555716Z             {
2026-06-21T03:31:34.8555869Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8555978Z               "line": 188
2026-06-21T03:31:34.8556089Z             },
2026-06-21T03:31:34.8556202Z             {
2026-06-21T03:31:34.8556351Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8556465Z               "line": 214
2026-06-21T03:31:34.8556564Z             },
2026-06-21T03:31:34.8556673Z             {
2026-06-21T03:31:34.8556816Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8556923Z               "line": 28
2026-06-21T03:31:34.8557034Z             },
2026-06-21T03:31:34.8557134Z             {
2026-06-21T03:31:34.8557290Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8557397Z               "line": 105
2026-06-21T03:31:34.8557506Z             },
2026-06-21T03:31:34.8557605Z             {
2026-06-21T03:31:34.8557749Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8557854Z               "line": 161
2026-06-21T03:31:34.8557958Z             },
2026-06-21T03:31:34.8558059Z             {
2026-06-21T03:31:34.8558206Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8558322Z               "line": 180
2026-06-21T03:31:34.8558435Z             },
2026-06-21T03:31:34.8558530Z             {
2026-06-21T03:31:34.8558689Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8558787Z               "line": 421
2026-06-21T03:31:34.8558893Z             },
2026-06-21T03:31:34.8559065Z             {
2026-06-21T03:31:34.8559227Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8559347Z               "line": 289
2026-06-21T03:31:34.8559440Z             },
2026-06-21T03:31:34.8559564Z             {
2026-06-21T03:31:34.8559709Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8559817Z               "line": 336
2026-06-21T03:31:34.8559922Z             },
2026-06-21T03:31:34.8560032Z             {
2026-06-21T03:31:34.8560174Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8560281Z               "line": 362
2026-06-21T03:31:34.8560385Z             },
2026-06-21T03:31:34.8560494Z             {
2026-06-21T03:31:34.8560642Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.8560746Z               "line": 100
2026-06-21T03:31:34.8560852Z             }
2026-06-21T03:31:34.8560962Z           ]
2026-06-21T03:31:34.8561061Z         },
2026-06-21T03:31:34.8561172Z         "int": {
2026-06-21T03:31:34.8561286Z           "complete": true,
2026-06-21T03:31:34.8561404Z           "evidence": [
2026-06-21T03:31:34.8561506Z             {
2026-06-21T03:31:34.8561662Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8561775Z               "line": 563
2026-06-21T03:31:34.8561876Z             },
2026-06-21T03:31:34.8561983Z             {
2026-06-21T03:31:34.8562131Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8562232Z               "line": 747
2026-06-21T03:31:34.8562326Z             },
2026-06-21T03:31:34.8562426Z             {
2026-06-21T03:31:34.8562575Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8562794Z               "line": 1165
2026-06-21T03:31:34.8562904Z             }
2026-06-21T03:31:34.8563008Z           ]
2026-06-21T03:31:34.8563114Z         },
2026-06-21T03:31:34.8563218Z         "unit": {
2026-06-21T03:31:34.8563342Z           "complete": true,
2026-06-21T03:31:34.8563462Z           "evidence": [
2026-06-21T03:31:34.8563561Z             {
2026-06-21T03:31:34.8563704Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.8563820Z               "line": 674
2026-06-21T03:31:34.8563928Z             },
2026-06-21T03:31:34.8564029Z             {
2026-06-21T03:31:34.8564181Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8564392Z               "line": 238
2026-06-21T03:31:34.8564501Z             },
2026-06-21T03:31:34.8564609Z             {
2026-06-21T03:31:34.8564758Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8564874Z               "line": 269
2026-06-21T03:31:34.8564983Z             },
2026-06-21T03:31:34.8565094Z             {
2026-06-21T03:31:34.8565241Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8565346Z               "line": 305
2026-06-21T03:31:34.8565456Z             },
2026-06-21T03:31:34.8565565Z             {
2026-06-21T03:31:34.8565709Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:31:34.8565819Z               "line": 336
2026-06-21T03:31:34.8565922Z             },
2026-06-21T03:31:34.8566029Z             {
2026-06-21T03:31:34.8566185Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.8566305Z               "line": 1217
2026-06-21T03:31:34.8566415Z             },
2026-06-21T03:31:34.8566519Z             {
2026-06-21T03:31:34.8566664Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.8566781Z               "line": 1163
2026-06-21T03:31:34.8566881Z             }
2026-06-21T03:31:34.8566978Z           ]
2026-06-21T03:31:34.8567087Z         }
2026-06-21T03:31:34.8567200Z       }
2026-06-21T03:31:34.8567305Z     },
2026-06-21T03:31:34.8567408Z     {
2026-06-21T03:31:34.8567521Z       "id": "REQ-RC-1",
2026-06-21T03:31:34.8569663Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T03:31:34.8569802Z       "requiredStages": [
2026-06-21T03:31:34.8569907Z         "impl",
2026-06-21T03:31:34.8570015Z         "unit",
2026-06-21T03:31:34.8570114Z         "int"
2026-06-21T03:31:34.8570225Z       ],
2026-06-21T03:31:34.8570325Z       "stages": {
2026-06-21T03:31:34.8570434Z         "doc": {
2026-06-21T03:31:34.8570554Z           "complete": false,
2026-06-21T03:31:34.8570663Z           "evidence": []
2026-06-21T03:31:34.8570773Z         },
2026-06-21T03:31:34.8570878Z         "impl": {
2026-06-21T03:31:34.8571001Z           "complete": true,
2026-06-21T03:31:34.8571112Z           "evidence": [
2026-06-21T03:31:34.8571217Z             {
2026-06-21T03:31:34.8571374Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.8571480Z               "line": 944
2026-06-21T03:31:34.8571578Z             },
2026-06-21T03:31:34.8571683Z             {
2026-06-21T03:31:34.8571828Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8571941Z               "line": 1926
2026-06-21T03:31:34.8572041Z             },
2026-06-21T03:31:34.8572152Z             {
2026-06-21T03:31:34.8572402Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8572511Z               "line": 967
2026-06-21T03:31:34.8572615Z             },
2026-06-21T03:31:34.8572724Z             {
2026-06-21T03:31:34.8572868Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8572977Z               "line": 1001
2026-06-21T03:31:34.8573083Z             },
2026-06-21T03:31:34.8573183Z             {
2026-06-21T03:31:34.8573320Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8573426Z               "line": 22
2026-06-21T03:31:34.8573530Z             },
2026-06-21T03:31:34.8573630Z             {
2026-06-21T03:31:34.8573764Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8573974Z               "line": 701
2026-06-21T03:31:34.8574079Z             }
2026-06-21T03:31:34.8574188Z           ]
2026-06-21T03:31:34.8574289Z         },
2026-06-21T03:31:34.8574394Z         "int": {
2026-06-21T03:31:34.8574503Z           "complete": true,
2026-06-21T03:31:34.8574609Z           "evidence": [
2026-06-21T03:31:34.8574718Z             {
2026-06-21T03:31:34.8574861Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8574986Z               "line": 258
2026-06-21T03:31:34.8575080Z             },
2026-06-21T03:31:34.8575179Z             {
2026-06-21T03:31:34.8578725Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8578874Z               "line": 285
2026-06-21T03:31:34.8579074Z             },
2026-06-21T03:31:34.8579184Z             {
2026-06-21T03:31:34.8579350Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8579475Z               "line": 413
2026-06-21T03:31:34.8579594Z             }
2026-06-21T03:31:34.8579694Z           ]
2026-06-21T03:31:34.8579795Z         },
2026-06-21T03:31:34.8579899Z         "unit": {
2026-06-21T03:31:34.8580008Z           "complete": true,
2026-06-21T03:31:34.8580119Z           "evidence": [
2026-06-21T03:31:34.8580223Z             {
2026-06-21T03:31:34.8580372Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8580486Z               "line": 1327
2026-06-21T03:31:34.8580594Z             },
2026-06-21T03:31:34.8580694Z             {
2026-06-21T03:31:34.8580824Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8580932Z               "line": 1133
2026-06-21T03:31:34.8581038Z             },
2026-06-21T03:31:34.8581138Z             {
2026-06-21T03:31:34.8581261Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8581372Z               "line": 1162
2026-06-21T03:31:34.8581476Z             },
2026-06-21T03:31:34.8581580Z             {
2026-06-21T03:31:34.8581696Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8581809Z               "line": 1175
2026-06-21T03:31:34.8581919Z             }
2026-06-21T03:31:34.8582021Z           ]
2026-06-21T03:31:34.8582124Z         }
2026-06-21T03:31:34.8582219Z       }
2026-06-21T03:31:34.8582321Z     },
2026-06-21T03:31:34.8582425Z     {
2026-06-21T03:31:34.8582558Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T03:31:34.8588396Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T03:31:34.8588820Z       "requiredStages": [
2026-06-21T03:31:34.8588923Z         "doc",
2026-06-21T03:31:34.8589125Z         "impl",
2026-06-21T03:31:34.8589238Z         "unit"
2026-06-21T03:31:34.8589353Z       ],
2026-06-21T03:31:34.8589453Z       "stages": {
2026-06-21T03:31:34.8589557Z         "doc": {
2026-06-21T03:31:34.8589683Z           "complete": true,
2026-06-21T03:31:34.8589777Z           "evidence": [
2026-06-21T03:31:34.8589882Z             {
2026-06-21T03:31:34.8590007Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8590116Z               "line": 345
2026-06-21T03:31:34.8590225Z             },
2026-06-21T03:31:34.8590327Z             {
2026-06-21T03:31:34.8590473Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.8590578Z               "line": 440
2026-06-21T03:31:34.8590689Z             }
2026-06-21T03:31:34.8590797Z           ]
2026-06-21T03:31:34.8590898Z         },
2026-06-21T03:31:34.8590999Z         "impl": {
2026-06-21T03:31:34.8591111Z           "complete": true,
2026-06-21T03:31:34.8591220Z           "evidence": [
2026-06-21T03:31:34.8591316Z             {
2026-06-21T03:31:34.8591445Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8591555Z               "line": 226
2026-06-21T03:31:34.8591660Z             },
2026-06-21T03:31:34.8591765Z             {
2026-06-21T03:31:34.8591888Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8592003Z               "line": 285
2026-06-21T03:31:34.8592108Z             },
2026-06-21T03:31:34.8592212Z             {
2026-06-21T03:31:34.8592337Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8592446Z               "line": 300
2026-06-21T03:31:34.8592557Z             },
2026-06-21T03:31:34.8592657Z             {
2026-06-21T03:31:34.8592780Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8592886Z               "line": 315
2026-06-21T03:31:34.8592995Z             },
2026-06-21T03:31:34.8593104Z             {
2026-06-21T03:31:34.8593229Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8593338Z               "line": 364
2026-06-21T03:31:34.8593442Z             }
2026-06-21T03:31:34.8593537Z           ]
2026-06-21T03:31:34.8593632Z         },
2026-06-21T03:31:34.8593745Z         "int": {
2026-06-21T03:31:34.8593859Z           "complete": false,
2026-06-21T03:31:34.8593979Z           "evidence": []
2026-06-21T03:31:34.8594078Z         },
2026-06-21T03:31:34.8594183Z         "unit": {
2026-06-21T03:31:34.8594294Z           "complete": true,
2026-06-21T03:31:34.8594402Z           "evidence": [
2026-06-21T03:31:34.8594504Z             {
2026-06-21T03:31:34.8594632Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8594746Z               "line": 1190
2026-06-21T03:31:34.8594866Z             },
2026-06-21T03:31:34.8594970Z             {
2026-06-21T03:31:34.8595099Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8595209Z               "line": 1305
2026-06-21T03:31:34.8595313Z             }
2026-06-21T03:31:34.8595414Z           ]
2026-06-21T03:31:34.8595624Z         }
2026-06-21T03:31:34.8595724Z       }
2026-06-21T03:31:34.8595825Z     },
2026-06-21T03:31:34.8595928Z     {
2026-06-21T03:31:34.8596054Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T03:31:34.8600485Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T03:31:34.8600743Z       "requiredStages": [
2026-06-21T03:31:34.8600853Z         "doc",
2026-06-21T03:31:34.8600948Z         "impl",
2026-06-21T03:31:34.8601057Z         "unit"
2026-06-21T03:31:34.8601163Z       ],
2026-06-21T03:31:34.8601268Z       "stages": {
2026-06-21T03:31:34.8601381Z         "doc": {
2026-06-21T03:31:34.8601488Z           "complete": true,
2026-06-21T03:31:34.8601597Z           "evidence": [
2026-06-21T03:31:34.8601700Z             {
2026-06-21T03:31:34.8601838Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.8601939Z               "line": 461
2026-06-21T03:31:34.8602043Z             }
2026-06-21T03:31:34.8602148Z           ]
2026-06-21T03:31:34.8602254Z         },
2026-06-21T03:31:34.8602358Z         "impl": {
2026-06-21T03:31:34.8602468Z           "complete": true,
2026-06-21T03:31:34.8602563Z           "evidence": [
2026-06-21T03:31:34.8602672Z             {
2026-06-21T03:31:34.8602802Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8602907Z               "line": 421
2026-06-21T03:31:34.8603011Z             },
2026-06-21T03:31:34.8603117Z             {
2026-06-21T03:31:34.8603245Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8603354Z               "line": 437
2026-06-21T03:31:34.8603461Z             }
2026-06-21T03:31:34.8603564Z           ]
2026-06-21T03:31:34.8603665Z         },
2026-06-21T03:31:34.8603766Z         "int": {
2026-06-21T03:31:34.8603874Z           "complete": false,
2026-06-21T03:31:34.8603988Z           "evidence": []
2026-06-21T03:31:34.8604088Z         },
2026-06-21T03:31:34.8604201Z         "unit": {
2026-06-21T03:31:34.8604305Z           "complete": true,
2026-06-21T03:31:34.8604415Z           "evidence": [
2026-06-21T03:31:34.8604516Z             {
2026-06-21T03:31:34.8604648Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8604763Z               "line": 1440
2026-06-21T03:31:34.8604868Z             },
2026-06-21T03:31:34.8604981Z             {
2026-06-21T03:31:34.8605102Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8605201Z               "line": 1459
2026-06-21T03:31:34.8605301Z             },
2026-06-21T03:31:34.8605407Z             {
2026-06-21T03:31:34.8605530Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8605750Z               "line": 1471
2026-06-21T03:31:34.8605859Z             },
2026-06-21T03:31:34.8605960Z             {
2026-06-21T03:31:34.8606089Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8606194Z               "line": 1499
2026-06-21T03:31:34.8606299Z             }
2026-06-21T03:31:34.8606399Z           ]
2026-06-21T03:31:34.8606508Z         }
2026-06-21T03:31:34.8606614Z       }
2026-06-21T03:31:34.8606719Z     },
2026-06-21T03:31:34.8606826Z     {
2026-06-21T03:31:34.8606945Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T03:31:34.8611810Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T03:31:34.8612076Z       "requiredStages": [
2026-06-21T03:31:34.8612185Z         "doc",
2026-06-21T03:31:34.8612294Z         "impl",
2026-06-21T03:31:34.8612389Z         "unit"
2026-06-21T03:31:34.8612495Z       ],
2026-06-21T03:31:34.8612598Z       "stages": {
2026-06-21T03:31:34.8612708Z         "doc": {
2026-06-21T03:31:34.8612828Z           "complete": true,
2026-06-21T03:31:34.8612927Z           "evidence": [
2026-06-21T03:31:34.8613023Z             {
2026-06-21T03:31:34.8613162Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:31:34.8613280Z               "line": 447
2026-06-21T03:31:34.8613382Z             }
2026-06-21T03:31:34.8613486Z           ]
2026-06-21T03:31:34.8613576Z         },
2026-06-21T03:31:34.8613677Z         "impl": {
2026-06-21T03:31:34.8613781Z           "complete": true,
2026-06-21T03:31:34.8613891Z           "evidence": [
2026-06-21T03:31:34.8614002Z             {
2026-06-21T03:31:34.8614134Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8614244Z               "line": 395
2026-06-21T03:31:34.8614350Z             },
2026-06-21T03:31:34.8614453Z             {
2026-06-21T03:31:34.8614586Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8614695Z               "line": 411
2026-06-21T03:31:34.8614798Z             },
2026-06-21T03:31:34.8614883Z             {
2026-06-21T03:31:34.8615003Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8615113Z               "line": 454
2026-06-21T03:31:34.8615212Z             },
2026-06-21T03:31:34.8615323Z             {
2026-06-21T03:31:34.8615447Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8615556Z               "line": 468
2026-06-21T03:31:34.8615657Z             },
2026-06-21T03:31:34.8615757Z             {
2026-06-21T03:31:34.8615886Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8616090Z               "line": 479
2026-06-21T03:31:34.8616200Z             }
2026-06-21T03:31:34.8616301Z           ]
2026-06-21T03:31:34.8616405Z         },
2026-06-21T03:31:34.8616510Z         "int": {
2026-06-21T03:31:34.8616625Z           "complete": false,
2026-06-21T03:31:34.8616744Z           "evidence": []
2026-06-21T03:31:34.8616840Z         },
2026-06-21T03:31:34.8616950Z         "unit": {
2026-06-21T03:31:34.8617063Z           "complete": true,
2026-06-21T03:31:34.8617178Z           "evidence": [
2026-06-21T03:31:34.8617279Z             {
2026-06-21T03:31:34.8617405Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8617525Z               "line": 1381
2026-06-21T03:31:34.8617699Z             },
2026-06-21T03:31:34.8617803Z             {
2026-06-21T03:31:34.8617933Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8618046Z               "line": 1402
2026-06-21T03:31:34.8618147Z             },
2026-06-21T03:31:34.8618252Z             {
2026-06-21T03:31:34.8618375Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8618486Z               "line": 1423
2026-06-21T03:31:34.8618586Z             }
2026-06-21T03:31:34.8618690Z           ]
2026-06-21T03:31:34.8618786Z         }
2026-06-21T03:31:34.8618877Z       }
2026-06-21T03:31:34.8619067Z     },
2026-06-21T03:31:34.8619168Z     {
2026-06-21T03:31:34.8619286Z       "id": "REQ-RCVIEW-1",
2026-06-21T03:31:34.8623831Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T03:31:34.8623975Z       "requiredStages": [
2026-06-21T03:31:34.8624075Z         "doc",
2026-06-21T03:31:34.8624188Z         "impl",
2026-06-21T03:31:34.8624290Z         "unit",
2026-06-21T03:31:34.8624403Z         "int"
2026-06-21T03:31:34.8624498Z       ],
2026-06-21T03:31:34.8624605Z       "stages": {
2026-06-21T03:31:34.8624708Z         "doc": {
2026-06-21T03:31:34.8624823Z           "complete": true,
2026-06-21T03:31:34.8624929Z           "evidence": [
2026-06-21T03:31:34.8625032Z             {
2026-06-21T03:31:34.8625150Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8625256Z               "line": 342
2026-06-21T03:31:34.8625363Z             }
2026-06-21T03:31:34.8625463Z           ]
2026-06-21T03:31:34.8625568Z         },
2026-06-21T03:31:34.8625687Z         "impl": {
2026-06-21T03:31:34.8625802Z           "complete": true,
2026-06-21T03:31:34.8625912Z           "evidence": [
2026-06-21T03:31:34.8626012Z             {
2026-06-21T03:31:34.8626165Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:31:34.8626274Z               "line": 354
2026-06-21T03:31:34.8626490Z             },
2026-06-21T03:31:34.8626594Z             {
2026-06-21T03:31:34.8626741Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8626837Z               "line": 574
2026-06-21T03:31:34.8626937Z             },
2026-06-21T03:31:34.8627041Z             {
2026-06-21T03:31:34.8627185Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8627294Z               "line": 585
2026-06-21T03:31:34.8627400Z             },
2026-06-21T03:31:34.8627505Z             {
2026-06-21T03:31:34.8627647Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8627758Z               "line": 41
2026-06-21T03:31:34.8627975Z             },
2026-06-21T03:31:34.8628075Z             {
2026-06-21T03:31:34.8628221Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8628330Z               "line": 62
2026-06-21T03:31:34.8628435Z             },
2026-06-21T03:31:34.8628545Z             {
2026-06-21T03:31:34.8628678Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.8628789Z               "line": 309
2026-06-21T03:31:34.8628893Z             },
2026-06-21T03:31:34.8629075Z             {
2026-06-21T03:31:34.8629203Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:31:34.8629318Z               "line": 701
2026-06-21T03:31:34.8629437Z             }
2026-06-21T03:31:34.8629532Z           ]
2026-06-21T03:31:34.8629637Z         },
2026-06-21T03:31:34.8629742Z         "int": {
2026-06-21T03:31:34.8629851Z           "complete": true,
2026-06-21T03:31:34.8629962Z           "evidence": [
2026-06-21T03:31:34.8630062Z             {
2026-06-21T03:31:34.8630205Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8630315Z               "line": 913
2026-06-21T03:31:34.8630420Z             },
2026-06-21T03:31:34.8630523Z             {
2026-06-21T03:31:34.8630661Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8630774Z               "line": 953
2026-06-21T03:31:34.8630878Z             },
2026-06-21T03:31:34.8630978Z             {
2026-06-21T03:31:34.8631126Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8631235Z               "line": 1000
2026-06-21T03:31:34.8631337Z             },
2026-06-21T03:31:34.8631446Z             {
2026-06-21T03:31:34.8631579Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8631675Z               "line": 1112
2026-06-21T03:31:34.8631780Z             }
2026-06-21T03:31:34.8631884Z           ]
2026-06-21T03:31:34.8631990Z         },
2026-06-21T03:31:34.8632094Z         "unit": {
2026-06-21T03:31:34.8632208Z           "complete": true,
2026-06-21T03:31:34.8632319Z           "evidence": [
2026-06-21T03:31:34.8632419Z             {
2026-06-21T03:31:34.8632553Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8632676Z               "line": 175
2026-06-21T03:31:34.8632814Z             },
2026-06-21T03:31:34.8632915Z             {
2026-06-21T03:31:34.8633052Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:31:34.8633168Z               "line": 195
2026-06-21T03:31:34.8633273Z             }
2026-06-21T03:31:34.8633380Z           ]
2026-06-21T03:31:34.8633480Z         }
2026-06-21T03:31:34.8633577Z       }
2026-06-21T03:31:34.8633672Z     },
2026-06-21T03:31:34.8633776Z     {
2026-06-21T03:31:34.8633896Z       "id": "REQ-REACH-1",
2026-06-21T03:31:34.8634071Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T03:31:34.8634182Z       "requiredStages": [
2026-06-21T03:31:34.8634287Z         "impl",
2026-06-21T03:31:34.8634386Z         "unit",
2026-06-21T03:31:34.8634487Z         "int"
2026-06-21T03:31:34.8634601Z       ],
2026-06-21T03:31:34.8634705Z       "stages": {
2026-06-21T03:31:34.8634807Z         "doc": {
2026-06-21T03:31:34.8634920Z           "complete": false,
2026-06-21T03:31:34.8635020Z           "evidence": []
2026-06-21T03:31:34.8635131Z         },
2026-06-21T03:31:34.8635226Z         "impl": {
2026-06-21T03:31:34.8635451Z           "complete": true,
2026-06-21T03:31:34.8635559Z           "evidence": [
2026-06-21T03:31:34.8635663Z             {
2026-06-21T03:31:34.8635816Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8635928Z               "line": 574
2026-06-21T03:31:34.8636037Z             },
2026-06-21T03:31:34.8636143Z             {
2026-06-21T03:31:34.8636290Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8636400Z               "line": 76
2026-06-21T03:31:34.8636505Z             },
2026-06-21T03:31:34.8636614Z             {
2026-06-21T03:31:34.8636754Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8636958Z               "line": 222
2026-06-21T03:31:34.8637069Z             },
2026-06-21T03:31:34.8637178Z             {
2026-06-21T03:31:34.8637320Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8637421Z               "line": 422
2026-06-21T03:31:34.8637525Z             },
2026-06-21T03:31:34.8637630Z             {
2026-06-21T03:31:34.8637769Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8637878Z               "line": 529
2026-06-21T03:31:34.8637989Z             },
2026-06-21T03:31:34.8638093Z             {
2026-06-21T03:31:34.8638231Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:31:34.8638338Z               "line": 39
2026-06-21T03:31:34.8638441Z             },
2026-06-21T03:31:34.8638544Z             {
2026-06-21T03:31:34.8638683Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.8638790Z               "line": 301
2026-06-21T03:31:34.8638899Z             },
2026-06-21T03:31:34.8639087Z             {
2026-06-21T03:31:34.8639229Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:31:34.8639330Z               "line": 88
2026-06-21T03:31:34.8639472Z             },
2026-06-21T03:31:34.8639573Z             {
2026-06-21T03:31:34.8639702Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:31:34.8639811Z               "line": 98
2026-06-21T03:31:34.8639911Z             },
2026-06-21T03:31:34.8640021Z             {
2026-06-21T03:31:34.8640168Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8640270Z               "line": 233
2026-06-21T03:31:34.8640378Z             }
2026-06-21T03:31:34.8640478Z           ]
2026-06-21T03:31:34.8640589Z         },
2026-06-21T03:31:34.8640693Z         "int": {
2026-06-21T03:31:34.8640807Z           "complete": true,
2026-06-21T03:31:34.8640913Z           "evidence": [
2026-06-21T03:31:34.8641022Z             {
2026-06-21T03:31:34.8641178Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8641287Z               "line": 415
2026-06-21T03:31:34.8641395Z             },
2026-06-21T03:31:34.8641495Z             {
2026-06-21T03:31:34.8641649Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8641762Z               "line": 520
2026-06-21T03:31:34.8641873Z             },
2026-06-21T03:31:34.8641963Z             {
2026-06-21T03:31:34.8642115Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8642225Z               "line": 998
2026-06-21T03:31:34.8642316Z             },
2026-06-21T03:31:34.8642425Z             {
2026-06-21T03:31:34.8642569Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8642678Z               "line": 1383
2026-06-21T03:31:34.8642788Z             }
2026-06-21T03:31:34.8642883Z           ]
2026-06-21T03:31:34.8642984Z         },
2026-06-21T03:31:34.8643088Z         "unit": {
2026-06-21T03:31:34.8643208Z           "complete": true,
2026-06-21T03:31:34.8643308Z           "evidence": [
2026-06-21T03:31:34.8643418Z             {
2026-06-21T03:31:34.8643560Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8643669Z               "line": 639
2026-06-21T03:31:34.8643771Z             },
2026-06-21T03:31:34.8643875Z             {
2026-06-21T03:31:34.8644021Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:31:34.8644227Z               "line": 660
2026-06-21T03:31:34.8644336Z             },
2026-06-21T03:31:34.8644442Z             {
2026-06-21T03:31:34.8644589Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:31:34.8644704Z               "line": 768
2026-06-21T03:31:34.8644809Z             },
2026-06-21T03:31:34.8644913Z             {
2026-06-21T03:31:34.8645047Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:31:34.8645166Z               "line": 93
2026-06-21T03:31:34.8645275Z             },
2026-06-21T03:31:34.8645381Z             {
2026-06-21T03:31:34.8645524Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:31:34.8645715Z               "line": 224
2026-06-21T03:31:34.8645828Z             },
2026-06-21T03:31:34.8645929Z             {
2026-06-21T03:31:34.8646068Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:31:34.8646181Z               "line": 96
2026-06-21T03:31:34.8646290Z             },
2026-06-21T03:31:34.8646400Z             {
2026-06-21T03:31:34.8646531Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:31:34.8646655Z               "line": 146
2026-06-21T03:31:34.8646761Z             },
2026-06-21T03:31:34.8646865Z             {
2026-06-21T03:31:34.8647009Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.8647118Z               "line": 698
2026-06-21T03:31:34.8647231Z             },
2026-06-21T03:31:34.8647324Z             {
2026-06-21T03:31:34.8647460Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:31:34.8647571Z               "line": 118
2026-06-21T03:31:34.8647676Z             },
2026-06-21T03:31:34.8647780Z             {
2026-06-21T03:31:34.8647914Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:31:34.8648023Z               "line": 148
2026-06-21T03:31:34.8648128Z             },
2026-06-21T03:31:34.8648229Z             {
2026-06-21T03:31:34.8648376Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8648481Z               "line": 928
2026-06-21T03:31:34.8648593Z             }
2026-06-21T03:31:34.8648695Z           ]
2026-06-21T03:31:34.8648796Z         }
2026-06-21T03:31:34.8648893Z       }
2026-06-21T03:31:34.8649081Z     },
2026-06-21T03:31:34.8649190Z     {
2026-06-21T03:31:34.8649299Z       "id": "REQ-REACH-2",
2026-06-21T03:31:34.8649494Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T03:31:34.8649609Z       "requiredStages": [],
2026-06-21T03:31:34.8649717Z       "stages": {
2026-06-21T03:31:34.8649823Z         "doc": {
2026-06-21T03:31:34.8649942Z           "complete": false,
2026-06-21T03:31:34.8650046Z           "evidence": []
2026-06-21T03:31:34.8650152Z         },
2026-06-21T03:31:34.8650266Z         "impl": {
2026-06-21T03:31:34.8650375Z           "complete": false,
2026-06-21T03:31:34.8650486Z           "evidence": []
2026-06-21T03:31:34.8650590Z         },
2026-06-21T03:31:34.8650700Z         "int": {
2026-06-21T03:31:34.8650816Z           "complete": false,
2026-06-21T03:31:34.8650924Z           "evidence": []
2026-06-21T03:31:34.8651034Z         },
2026-06-21T03:31:34.8651140Z         "unit": {
2026-06-21T03:31:34.8651257Z           "complete": false,
2026-06-21T03:31:34.8651363Z           "evidence": []
2026-06-21T03:31:34.8651474Z         }
2026-06-21T03:31:34.8651577Z       }
2026-06-21T03:31:34.8651681Z     },
2026-06-21T03:31:34.8651782Z     {
2026-06-21T03:31:34.8651908Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T03:31:34.8655417Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T03:31:34.8655755Z       "requiredStages": [
2026-06-21T03:31:34.8655859Z         "doc",
2026-06-21T03:31:34.8655966Z         "impl",
2026-06-21T03:31:34.8656074Z         "unit",
2026-06-21T03:31:34.8656179Z         "int"
2026-06-21T03:31:34.8656285Z       ],
2026-06-21T03:31:34.8656398Z       "stages": {
2026-06-21T03:31:34.8656509Z         "doc": {
2026-06-21T03:31:34.8656633Z           "complete": true,
2026-06-21T03:31:34.8656745Z           "evidence": [
2026-06-21T03:31:34.8656845Z             {
2026-06-21T03:31:34.8656969Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8657072Z               "line": 372
2026-06-21T03:31:34.8657172Z             }
2026-06-21T03:31:34.8657278Z           ]
2026-06-21T03:31:34.8657382Z         },
2026-06-21T03:31:34.8657492Z         "impl": {
2026-06-21T03:31:34.8657611Z           "complete": true,
2026-06-21T03:31:34.8657711Z           "evidence": [
2026-06-21T03:31:34.8657821Z             {
2026-06-21T03:31:34.8657974Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8658087Z               "line": 110
2026-06-21T03:31:34.8658198Z             }
2026-06-21T03:31:34.8658303Z           ]
2026-06-21T03:31:34.8658412Z         },
2026-06-21T03:31:34.8658508Z         "int": {
2026-06-21T03:31:34.8658617Z           "complete": true,
2026-06-21T03:31:34.8658736Z           "evidence": [
2026-06-21T03:31:34.8658833Z             {
2026-06-21T03:31:34.8659095Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T03:31:34.8659204Z               "line": 26
2026-06-21T03:31:34.8659313Z             }
2026-06-21T03:31:34.8659429Z           ]
2026-06-21T03:31:34.8659529Z         },
2026-06-21T03:31:34.8659637Z         "unit": {
2026-06-21T03:31:34.8659751Z           "complete": true,
2026-06-21T03:31:34.8659864Z           "evidence": [
2026-06-21T03:31:34.8659963Z             {
2026-06-21T03:31:34.8660102Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:31:34.8660212Z               "line": 320
2026-06-21T03:31:34.8660316Z             }
2026-06-21T03:31:34.8660417Z           ]
2026-06-21T03:31:34.8660517Z         }
2026-06-21T03:31:34.8660621Z       }
2026-06-21T03:31:34.8660727Z     },
2026-06-21T03:31:34.8660831Z     {
2026-06-21T03:31:34.8660940Z       "id": "REQ-REL-1",
2026-06-21T03:31:34.8661361Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T03:31:34.8661479Z       "requiredStages": [
2026-06-21T03:31:34.8661584Z         "doc",
2026-06-21T03:31:34.8661690Z         "impl"
2026-06-21T03:31:34.8661794Z       ],
2026-06-21T03:31:34.8661904Z       "stages": {
2026-06-21T03:31:34.8662015Z         "doc": {
2026-06-21T03:31:34.8662128Z           "complete": true,
2026-06-21T03:31:34.8662236Z           "evidence": [
2026-06-21T03:31:34.8662342Z             {
2026-06-21T03:31:34.8662586Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T03:31:34.8662692Z               "line": 3
2026-06-21T03:31:34.8662792Z             }
2026-06-21T03:31:34.8662901Z           ]
2026-06-21T03:31:34.8663002Z         },
2026-06-21T03:31:34.8663112Z         "impl": {
2026-06-21T03:31:34.8663221Z           "complete": true,
2026-06-21T03:31:34.8663331Z           "evidence": [
2026-06-21T03:31:34.8663426Z             {
2026-06-21T03:31:34.8663689Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T03:31:34.8663798Z               "line": 11
2026-06-21T03:31:34.8663899Z             },
2026-06-21T03:31:34.8664008Z             {
2026-06-21T03:31:34.8664137Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8664238Z               "line": 265
2026-06-21T03:31:34.8664342Z             }
2026-06-21T03:31:34.8664451Z           ]
2026-06-21T03:31:34.8664553Z         },
2026-06-21T03:31:34.8664661Z         "int": {
2026-06-21T03:31:34.8664771Z           "complete": false,
2026-06-21T03:31:34.8664882Z           "evidence": []
2026-06-21T03:31:34.8665094Z         },
2026-06-21T03:31:34.8665204Z         "unit": {
2026-06-21T03:31:34.8665319Z           "complete": false,
2026-06-21T03:31:34.8665442Z           "evidence": []
2026-06-21T03:31:34.8665538Z         }
2026-06-21T03:31:34.8665648Z       }
2026-06-21T03:31:34.8665742Z     },
2026-06-21T03:31:34.8665853Z     {
2026-06-21T03:31:34.8665962Z       "id": "REQ-REL-2",
2026-06-21T03:31:34.8666483Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T03:31:34.8666601Z       "requiredStages": [
2026-06-21T03:31:34.8666706Z         "impl",
2026-06-21T03:31:34.8666817Z         "int"
2026-06-21T03:31:34.8666916Z       ],
2026-06-21T03:31:34.8667030Z       "stages": {
2026-06-21T03:31:34.8667136Z         "doc": {
2026-06-21T03:31:34.8667259Z           "complete": true,
2026-06-21T03:31:34.8667377Z           "evidence": [
2026-06-21T03:31:34.8667477Z             {
2026-06-21T03:31:34.8667613Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T03:31:34.8667713Z               "line": 6
2026-06-21T03:31:34.8667819Z             }
2026-06-21T03:31:34.8667928Z           ]
2026-06-21T03:31:34.8668033Z         },
2026-06-21T03:31:34.8668148Z         "impl": {
2026-06-21T03:31:34.8668253Z           "complete": true,
2026-06-21T03:31:34.8668371Z           "evidence": [
2026-06-21T03:31:34.8668477Z             {
2026-06-21T03:31:34.8668623Z               "path": ".github/workflows/release.yml",
2026-06-21T03:31:34.8668725Z               "line": 16
2026-06-21T03:31:34.8668834Z             },
2026-06-21T03:31:34.8669025Z             {
2026-06-21T03:31:34.8669172Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8669272Z               "line": 352
2026-06-21T03:31:34.8669388Z             },
2026-06-21T03:31:34.8669482Z             {
2026-06-21T03:31:34.8669616Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8669722Z               "line": 426
2026-06-21T03:31:34.8669830Z             },
2026-06-21T03:31:34.8669936Z             {
2026-06-21T03:31:34.8670066Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8670168Z               "line": 588
2026-06-21T03:31:34.8670272Z             },
2026-06-21T03:31:34.8670378Z             {
2026-06-21T03:31:34.8670518Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8670629Z               "line": 720
2026-06-21T03:31:34.8670729Z             }
2026-06-21T03:31:34.8670837Z           ]
2026-06-21T03:31:34.8670943Z         },
2026-06-21T03:31:34.8671048Z         "int": {
2026-06-21T03:31:34.8671166Z           "complete": true,
2026-06-21T03:31:34.8671268Z           "evidence": [
2026-06-21T03:31:34.8671377Z             {
2026-06-21T03:31:34.8671529Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T03:31:34.8671645Z               "line": 13
2026-06-21T03:31:34.8671749Z             }
2026-06-21T03:31:34.8671854Z           ]
2026-06-21T03:31:34.8671960Z         },
2026-06-21T03:31:34.8672068Z         "unit": {
2026-06-21T03:31:34.8672187Z           "complete": false,
2026-06-21T03:31:34.8672298Z           "evidence": []
2026-06-21T03:31:34.8672406Z         }
2026-06-21T03:31:34.8672502Z       }
2026-06-21T03:31:34.8672613Z     },
2026-06-21T03:31:34.8672711Z     {
2026-06-21T03:31:34.8672935Z       "id": "REQ-REL-3",
2026-06-21T03:31:34.8673424Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T03:31:34.8673534Z       "requiredStages": [
2026-06-21T03:31:34.8673644Z         "impl",
2026-06-21T03:31:34.8673743Z         "unit"
2026-06-21T03:31:34.8673854Z       ],
2026-06-21T03:31:34.8673963Z       "stages": {
2026-06-21T03:31:34.8674072Z         "doc": {
2026-06-21T03:31:34.8674193Z           "complete": false,
2026-06-21T03:31:34.8674306Z           "evidence": []
2026-06-21T03:31:34.8674411Z         },
2026-06-21T03:31:34.8674611Z         "impl": {
2026-06-21T03:31:34.8674721Z           "complete": true,
2026-06-21T03:31:34.8674832Z           "evidence": [
2026-06-21T03:31:34.8674926Z             {
2026-06-21T03:31:34.8675094Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.8675198Z               "line": 237
2026-06-21T03:31:34.8675307Z             },
2026-06-21T03:31:34.8675404Z             {
2026-06-21T03:31:34.8675555Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.8675663Z               "line": 289
2026-06-21T03:31:34.8675769Z             },
2026-06-21T03:31:34.8675879Z             {
2026-06-21T03:31:34.8676011Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8676127Z               "line": 329
2026-06-21T03:31:34.8676232Z             },
2026-06-21T03:31:34.8676335Z             {
2026-06-21T03:31:34.8676475Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8676589Z               "line": 353
2026-06-21T03:31:34.8676703Z             },
2026-06-21T03:31:34.8676804Z             {
2026-06-21T03:31:34.8676937Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.8677038Z               "line": 394
2026-06-21T03:31:34.8677147Z             }
2026-06-21T03:31:34.8677257Z           ]
2026-06-21T03:31:34.8677358Z         },
2026-06-21T03:31:34.8680539Z         "int": {
2026-06-21T03:31:34.8680696Z           "complete": false,
2026-06-21T03:31:34.8680814Z           "evidence": []
2026-06-21T03:31:34.8680919Z         },
2026-06-21T03:31:34.8681050Z         "unit": {
2026-06-21T03:31:34.8681189Z           "complete": true,
2026-06-21T03:31:34.8681298Z           "evidence": [
2026-06-21T03:31:34.8681417Z             {
2026-06-21T03:31:34.8681566Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.8681680Z               "line": 1045
2026-06-21T03:31:34.8681789Z             },
2026-06-21T03:31:34.8681890Z             {
2026-06-21T03:31:34.8682046Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.8682176Z               "line": 1104
2026-06-21T03:31:34.8682285Z             }
2026-06-21T03:31:34.8682380Z           ]
2026-06-21T03:31:34.8682481Z         }
2026-06-21T03:31:34.8682586Z       }
2026-06-21T03:31:34.8682690Z     },
2026-06-21T03:31:34.8682796Z     {
2026-06-21T03:31:34.8682914Z       "id": "REQ-RUN-PICKER",
2026-06-21T03:31:34.8687759Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T03:31:34.8688059Z       "requiredStages": [
2026-06-21T03:31:34.8688267Z         "doc",
2026-06-21T03:31:34.8688369Z         "impl",
2026-06-21T03:31:34.8688473Z         "unit"
2026-06-21T03:31:34.8688579Z       ],
2026-06-21T03:31:34.8688682Z       "stages": {
2026-06-21T03:31:34.8688786Z         "doc": {
2026-06-21T03:31:34.8688901Z           "complete": true,
2026-06-21T03:31:34.8689100Z           "evidence": [
2026-06-21T03:31:34.8689201Z             {
2026-06-21T03:31:34.8689325Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8689448Z               "line": 349
2026-06-21T03:31:34.8689545Z             }
2026-06-21T03:31:34.8689640Z           ]
2026-06-21T03:31:34.8689739Z         },
2026-06-21T03:31:34.8689846Z         "impl": {
2026-06-21T03:31:34.8689969Z           "complete": true,
2026-06-21T03:31:34.8690082Z           "evidence": [
2026-06-21T03:31:34.8690189Z             {
2026-06-21T03:31:34.8690312Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8690426Z               "line": 958
2026-06-21T03:31:34.8690527Z             },
2026-06-21T03:31:34.8690631Z             {
2026-06-21T03:31:34.8690756Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8690866Z               "line": 968
2026-06-21T03:31:34.8690969Z             },
2026-06-21T03:31:34.8691061Z             {
2026-06-21T03:31:34.8691209Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8691321Z               "line": 9
2026-06-21T03:31:34.8691426Z             },
2026-06-21T03:31:34.8691535Z             {
2026-06-21T03:31:34.8691672Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:31:34.8691777Z               "line": 67
2026-06-21T03:31:34.8691883Z             },
2026-06-21T03:31:34.8691986Z             {
2026-06-21T03:31:34.8692116Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T03:31:34.8692231Z               "line": 16
2026-06-21T03:31:34.8692339Z             },
2026-06-21T03:31:34.8692445Z             {
2026-06-21T03:31:34.8692574Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T03:31:34.8692688Z               "line": 254
2026-06-21T03:31:34.8692798Z             },
2026-06-21T03:31:34.8692893Z             {
2026-06-21T03:31:34.8693047Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8693155Z               "line": 11
2026-06-21T03:31:34.8693255Z             },
2026-06-21T03:31:34.8693371Z             {
2026-06-21T03:31:34.8693498Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8693608Z               "line": 115
2026-06-21T03:31:34.8693709Z             },
2026-06-21T03:31:34.8693813Z             {
2026-06-21T03:31:34.8693959Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8694070Z               "line": 554
2026-06-21T03:31:34.8694177Z             },
2026-06-21T03:31:34.8694276Z             {
2026-06-21T03:31:34.8694421Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8694534Z               "line": 635
2026-06-21T03:31:34.8694640Z             },
2026-06-21T03:31:34.8694754Z             {
2026-06-21T03:31:34.8694897Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8695017Z               "line": 694
2026-06-21T03:31:34.8695112Z             },
2026-06-21T03:31:34.8695216Z             {
2026-06-21T03:31:34.8695351Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8695569Z               "line": 747
2026-06-21T03:31:34.8695707Z             },
2026-06-21T03:31:34.8695836Z             {
2026-06-21T03:31:34.8695971Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8696079Z               "line": 785
2026-06-21T03:31:34.8696185Z             },
2026-06-21T03:31:34.8696291Z             {
2026-06-21T03:31:34.8696442Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8696553Z               "line": 8
2026-06-21T03:31:34.8696657Z             }
2026-06-21T03:31:34.8696756Z           ]
2026-06-21T03:31:34.8696846Z         },
2026-06-21T03:31:34.8696956Z         "int": {
2026-06-21T03:31:34.8697170Z           "complete": false,
2026-06-21T03:31:34.8697285Z           "evidence": []
2026-06-21T03:31:34.8697394Z         },
2026-06-21T03:31:34.8697495Z         "unit": {
2026-06-21T03:31:34.8697614Z           "complete": true,
2026-06-21T03:31:34.8697723Z           "evidence": [
2026-06-21T03:31:34.8697829Z             {
2026-06-21T03:31:34.8697967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8698076Z               "line": 7638
2026-06-21T03:31:34.8698187Z             },
2026-06-21T03:31:34.8698286Z             {
2026-06-21T03:31:34.8698429Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8698535Z               "line": 7649
2026-06-21T03:31:34.8698643Z             },
2026-06-21T03:31:34.8698749Z             {
2026-06-21T03:31:34.8698892Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8699086Z               "line": 879
2026-06-21T03:31:34.8699186Z             },
2026-06-21T03:31:34.8699284Z             {
2026-06-21T03:31:34.8699451Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8699566Z               "line": 928
2026-06-21T03:31:34.8699675Z             },
2026-06-21T03:31:34.8699766Z             {
2026-06-21T03:31:34.8699909Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8700013Z               "line": 979
2026-06-21T03:31:34.8700124Z             },
2026-06-21T03:31:34.8700224Z             {
2026-06-21T03:31:34.8700367Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8700472Z               "line": 996
2026-06-21T03:31:34.8700571Z             },
2026-06-21T03:31:34.8700676Z             {
2026-06-21T03:31:34.8700815Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8700929Z               "line": 1005
2026-06-21T03:31:34.8701030Z             },
2026-06-21T03:31:34.8701139Z             {
2026-06-21T03:31:34.8701277Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8701384Z               "line": 1016
2026-06-21T03:31:34.8701491Z             },
2026-06-21T03:31:34.8701601Z             {
2026-06-21T03:31:34.8701741Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8701849Z               "line": 1038
2026-06-21T03:31:34.8701953Z             },
2026-06-21T03:31:34.8702067Z             {
2026-06-21T03:31:34.8702199Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8702309Z               "line": 1057
2026-06-21T03:31:34.8702410Z             },
2026-06-21T03:31:34.8702518Z             {
2026-06-21T03:31:34.8702653Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8702762Z               "line": 1107
2026-06-21T03:31:34.8702871Z             },
2026-06-21T03:31:34.8702977Z             {
2026-06-21T03:31:34.8703120Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8703219Z               "line": 1136
2026-06-21T03:31:34.8703320Z             },
2026-06-21T03:31:34.8703424Z             {
2026-06-21T03:31:34.8703572Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8703683Z               "line": 1149
2026-06-21T03:31:34.8703787Z             },
2026-06-21T03:31:34.8703897Z             {
2026-06-21T03:31:34.8704035Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8704144Z               "line": 1215
2026-06-21T03:31:34.8704364Z             },
2026-06-21T03:31:34.8704472Z             {
2026-06-21T03:31:34.8704615Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8704718Z               "line": 1256
2026-06-21T03:31:34.8704827Z             },
2026-06-21T03:31:34.8704928Z             {
2026-06-21T03:31:34.8705057Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8705175Z               "line": 1272
2026-06-21T03:31:34.8705272Z             },
2026-06-21T03:31:34.8705381Z             {
2026-06-21T03:31:34.8705515Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8705629Z               "line": 491
2026-06-21T03:31:34.8705825Z             },
2026-06-21T03:31:34.8705934Z             {
2026-06-21T03:31:34.8706067Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8706173Z               "line": 506
2026-06-21T03:31:34.8706277Z             },
2026-06-21T03:31:34.8706377Z             {
2026-06-21T03:31:34.8706521Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8706629Z               "line": 524
2026-06-21T03:31:34.8706735Z             },
2026-06-21T03:31:34.8706836Z             {
2026-06-21T03:31:34.8706963Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8707079Z               "line": 546
2026-06-21T03:31:34.8707175Z             },
2026-06-21T03:31:34.8707282Z             {
2026-06-21T03:31:34.8707411Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8707521Z               "line": 556
2026-06-21T03:31:34.8707630Z             },
2026-06-21T03:31:34.8707735Z             {
2026-06-21T03:31:34.8707879Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:31:34.8707988Z               "line": 582
2026-06-21T03:31:34.8708094Z             }
2026-06-21T03:31:34.8708198Z           ]
2026-06-21T03:31:34.8708302Z         }
2026-06-21T03:31:34.8708408Z       }
2026-06-21T03:31:34.8708498Z     },
2026-06-21T03:31:34.8708593Z     {
2026-06-21T03:31:34.8708704Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T03:31:34.8713494Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T03:31:34.8713651Z       "requiredStages": [
2026-06-21T03:31:34.8713760Z         "doc",
2026-06-21T03:31:34.8713866Z         "impl",
2026-06-21T03:31:34.8713980Z         "unit"
2026-06-21T03:31:34.8714079Z       ],
2026-06-21T03:31:34.8714191Z       "stages": {
2026-06-21T03:31:34.8714394Z         "doc": {
2026-06-21T03:31:34.8714506Z           "complete": true,
2026-06-21T03:31:34.8714614Z           "evidence": [
2026-06-21T03:31:34.8714709Z             {
2026-06-21T03:31:34.8714834Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8714924Z               "line": 390
2026-06-21T03:31:34.8715032Z             }
2026-06-21T03:31:34.8715138Z           ]
2026-06-21T03:31:34.8715246Z         },
2026-06-21T03:31:34.8715344Z         "impl": {
2026-06-21T03:31:34.8715460Z           "complete": true,
2026-06-21T03:31:34.8715570Z           "evidence": [
2026-06-21T03:31:34.8715673Z             {
2026-06-21T03:31:34.8715818Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8716180Z               "line": 39
2026-06-21T03:31:34.8716293Z             },
2026-06-21T03:31:34.8716400Z             {
2026-06-21T03:31:34.8716546Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8716661Z               "line": 79
2026-06-21T03:31:34.8716767Z             },
2026-06-21T03:31:34.8716871Z             {
2026-06-21T03:31:34.8717019Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8717129Z               "line": 162
2026-06-21T03:31:34.8717234Z             }
2026-06-21T03:31:34.8717334Z           ]
2026-06-21T03:31:34.8717439Z         },
2026-06-21T03:31:34.8717543Z         "int": {
2026-06-21T03:31:34.8717659Z           "complete": false,
2026-06-21T03:31:34.8717768Z           "evidence": []
2026-06-21T03:31:34.8717866Z         },
2026-06-21T03:31:34.8717976Z         "unit": {
2026-06-21T03:31:34.8718081Z           "complete": true,
2026-06-21T03:31:34.8718186Z           "evidence": [
2026-06-21T03:31:34.8718290Z             {
2026-06-21T03:31:34.8718439Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8718552Z               "line": 206
2026-06-21T03:31:34.8718649Z             },
2026-06-21T03:31:34.8718753Z             {
2026-06-21T03:31:34.8718881Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8719126Z               "line": 222
2026-06-21T03:31:34.8719230Z             },
2026-06-21T03:31:34.8719327Z             {
2026-06-21T03:31:34.8719478Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8719584Z               "line": 238
2026-06-21T03:31:34.8719679Z             },
2026-06-21T03:31:34.8719768Z             {
2026-06-21T03:31:34.8719918Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8720027Z               "line": 251
2026-06-21T03:31:34.8720126Z             },
2026-06-21T03:31:34.8720235Z             {
2026-06-21T03:31:34.8720372Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:31:34.8720495Z               "line": 258
2026-06-21T03:31:34.8720595Z             }
2026-06-21T03:31:34.8720691Z           ]
2026-06-21T03:31:34.8720795Z         }
2026-06-21T03:31:34.8720900Z       }
2026-06-21T03:31:34.8721001Z     },
2026-06-21T03:31:34.8721100Z     {
2026-06-21T03:31:34.8721226Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T03:31:34.8721439Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T03:31:34.8721555Z       "requiredStages": [
2026-06-21T03:31:34.8721664Z         "impl",
2026-06-21T03:31:34.8721758Z         "unit"
2026-06-21T03:31:34.8721864Z       ],
2026-06-21T03:31:34.8721968Z       "stages": {
2026-06-21T03:31:34.8722078Z         "doc": {
2026-06-21T03:31:34.8722184Z           "complete": false,
2026-06-21T03:31:34.8722302Z           "evidence": []
2026-06-21T03:31:34.8722402Z         },
2026-06-21T03:31:34.8722504Z         "impl": {
2026-06-21T03:31:34.8722616Z           "complete": true,
2026-06-21T03:31:34.8722727Z           "evidence": [
2026-06-21T03:31:34.8722833Z             {
2026-06-21T03:31:34.8722974Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8723078Z               "line": 18
2026-06-21T03:31:34.8723183Z             },
2026-06-21T03:31:34.8723291Z             {
2026-06-21T03:31:34.8723429Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8723643Z               "line": 35
2026-06-21T03:31:34.8723748Z             },
2026-06-21T03:31:34.8723849Z             {
2026-06-21T03:31:34.8723991Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8724102Z               "line": 72
2026-06-21T03:31:34.8724207Z             }
2026-06-21T03:31:34.8724306Z           ]
2026-06-21T03:31:34.8724412Z         },
2026-06-21T03:31:34.8724521Z         "int": {
2026-06-21T03:31:34.8724631Z           "complete": false,
2026-06-21T03:31:34.8724742Z           "evidence": []
2026-06-21T03:31:34.8724850Z         },
2026-06-21T03:31:34.8724955Z         "unit": {
2026-06-21T03:31:34.8725160Z           "complete": true,
2026-06-21T03:31:34.8725260Z           "evidence": [
2026-06-21T03:31:34.8725366Z             {
2026-06-21T03:31:34.8725498Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8725602Z               "line": 239
2026-06-21T03:31:34.8725712Z             },
2026-06-21T03:31:34.8725824Z             {
2026-06-21T03:31:34.8725967Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8726073Z               "line": 256
2026-06-21T03:31:34.8726182Z             },
2026-06-21T03:31:34.8726282Z             {
2026-06-21T03:31:34.8726425Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8726534Z               "line": 265
2026-06-21T03:31:34.8726630Z             }
2026-06-21T03:31:34.8726730Z           ]
2026-06-21T03:31:34.8726835Z         }
2026-06-21T03:31:34.8726940Z       }
2026-06-21T03:31:34.8727045Z     },
2026-06-21T03:31:34.8727150Z     {
2026-06-21T03:31:34.8727269Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T03:31:34.8727441Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T03:31:34.8727550Z       "requiredStages": [
2026-06-21T03:31:34.8727656Z         "impl",
2026-06-21T03:31:34.8727769Z         "unit"
2026-06-21T03:31:34.8727870Z       ],
2026-06-21T03:31:34.8727966Z       "stages": {
2026-06-21T03:31:34.8728088Z         "doc": {
2026-06-21T03:31:34.8728190Z           "complete": false,
2026-06-21T03:31:34.8728309Z           "evidence": []
2026-06-21T03:31:34.8728408Z         },
2026-06-21T03:31:34.8728517Z         "impl": {
2026-06-21T03:31:34.8728633Z           "complete": true,
2026-06-21T03:31:34.8728741Z           "evidence": [
2026-06-21T03:31:34.8728836Z             {
2026-06-21T03:31:34.8729042Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8729161Z               "line": 598
2026-06-21T03:31:34.8729267Z             }
2026-06-21T03:31:34.8729385Z           ]
2026-06-21T03:31:34.8729480Z         },
2026-06-21T03:31:34.8729590Z         "int": {
2026-06-21T03:31:34.8729714Z           "complete": false,
2026-06-21T03:31:34.8729814Z           "evidence": []
2026-06-21T03:31:34.8729920Z         },
2026-06-21T03:31:34.8730029Z         "unit": {
2026-06-21T03:31:34.8730149Z           "complete": true,
2026-06-21T03:31:34.8730258Z           "evidence": [
2026-06-21T03:31:34.8730367Z             {
2026-06-21T03:31:34.8730511Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8730610Z               "line": 967
2026-06-21T03:31:34.8730719Z             }
2026-06-21T03:31:34.8730828Z           ]
2026-06-21T03:31:34.8730932Z         }
2026-06-21T03:31:34.8731036Z       }
2026-06-21T03:31:34.8731141Z     },
2026-06-21T03:31:34.8731243Z     {
2026-06-21T03:31:34.8731360Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T03:31:34.8731571Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T03:31:34.8731684Z       "requiredStages": [
2026-06-21T03:31:34.8731795Z         "impl",
2026-06-21T03:31:34.8731895Z         "unit",
2026-06-21T03:31:34.8731999Z         "int"
2026-06-21T03:31:34.8732105Z       ],
2026-06-21T03:31:34.8732214Z       "stages": {
2026-06-21T03:31:34.8732323Z         "doc": {
2026-06-21T03:31:34.8732434Z           "complete": false,
2026-06-21T03:31:34.8732548Z           "evidence": []
2026-06-21T03:31:34.8732759Z         },
2026-06-21T03:31:34.8732871Z         "impl": {
2026-06-21T03:31:34.8732991Z           "complete": true,
2026-06-21T03:31:34.8733092Z           "evidence": [
2026-06-21T03:31:34.8733191Z             {
2026-06-21T03:31:34.8733336Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.8733436Z               "line": 24
2026-06-21T03:31:34.8733543Z             },
2026-06-21T03:31:34.8733648Z             {
2026-06-21T03:31:34.8733795Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8733903Z               "line": 22
2026-06-21T03:31:34.8734013Z             }
2026-06-21T03:31:34.8734114Z           ]
2026-06-21T03:31:34.8734309Z         },
2026-06-21T03:31:34.8734414Z         "int": {
2026-06-21T03:31:34.8734527Z           "complete": true,
2026-06-21T03:31:34.8734633Z           "evidence": [
2026-06-21T03:31:34.8734733Z             {
2026-06-21T03:31:34.8734880Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.8734987Z               "line": 260
2026-06-21T03:31:34.8735095Z             }
2026-06-21T03:31:34.8735195Z           ]
2026-06-21T03:31:34.8735302Z         },
2026-06-21T03:31:34.8735410Z         "unit": {
2026-06-21T03:31:34.8735515Z           "complete": true,
2026-06-21T03:31:34.8735626Z           "evidence": [
2026-06-21T03:31:34.8735729Z             {
2026-06-21T03:31:34.8735878Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.8735979Z               "line": 171
2026-06-21T03:31:34.8736087Z             },
2026-06-21T03:31:34.8736190Z             {
2026-06-21T03:31:34.8736328Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.8736451Z               "line": 200
2026-06-21T03:31:34.8736556Z             },
2026-06-21T03:31:34.8736666Z             {
2026-06-21T03:31:34.8736798Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:31:34.8736910Z               "line": 220
2026-06-21T03:31:34.8737014Z             },
2026-06-21T03:31:34.8737113Z             {
2026-06-21T03:31:34.8737266Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8737376Z               "line": 199
2026-06-21T03:31:34.8737486Z             },
2026-06-21T03:31:34.8737586Z             {
2026-06-21T03:31:34.8737728Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8737839Z               "line": 219
2026-06-21T03:31:34.8737948Z             },
2026-06-21T03:31:34.8738058Z             {
2026-06-21T03:31:34.8738197Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8738310Z               "line": 244
2026-06-21T03:31:34.8738401Z             },
2026-06-21T03:31:34.8738512Z             {
2026-06-21T03:31:34.8738658Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8738765Z               "line": 276
2026-06-21T03:31:34.8738869Z             },
2026-06-21T03:31:34.8739053Z             {
2026-06-21T03:31:34.8739202Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8739316Z               "line": 297
2026-06-21T03:31:34.8739440Z             },
2026-06-21T03:31:34.8739545Z             {
2026-06-21T03:31:34.8739677Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:31:34.8739784Z               "line": 324
2026-06-21T03:31:34.8739888Z             }
2026-06-21T03:31:34.8739987Z           ]
2026-06-21T03:31:34.8740089Z         }
2026-06-21T03:31:34.8740194Z       }
2026-06-21T03:31:34.8740302Z     },
2026-06-21T03:31:34.8740404Z     {
2026-06-21T03:31:34.8740527Z       "id": "REQ-SEAM-INJECT",
2026-06-21T03:31:34.8740719Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T03:31:34.8740842Z       "requiredStages": [
2026-06-21T03:31:34.8740942Z         "impl",
2026-06-21T03:31:34.8741048Z         "unit"
2026-06-21T03:31:34.8741156Z       ],
2026-06-21T03:31:34.8741265Z       "stages": {
2026-06-21T03:31:34.8741360Z         "doc": {
2026-06-21T03:31:34.8741478Z           "complete": false,
2026-06-21T03:31:34.8741582Z           "evidence": []
2026-06-21T03:31:34.8741803Z         },
2026-06-21T03:31:34.8741901Z         "impl": {
2026-06-21T03:31:34.8742021Z           "complete": true,
2026-06-21T03:31:34.8742126Z           "evidence": [
2026-06-21T03:31:34.8742235Z             {
2026-06-21T03:31:34.8742374Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8742483Z               "line": 19
2026-06-21T03:31:34.8742588Z             },
2026-06-21T03:31:34.8742694Z             {
2026-06-21T03:31:34.8742836Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8742941Z               "line": 111
2026-06-21T03:31:34.8743051Z             }
2026-06-21T03:31:34.8743246Z           ]
2026-06-21T03:31:34.8743352Z         },
2026-06-21T03:31:34.8743456Z         "int": {
2026-06-21T03:31:34.8743566Z           "complete": false,
2026-06-21T03:31:34.8743672Z           "evidence": []
2026-06-21T03:31:34.8743765Z         },
2026-06-21T03:31:34.8743876Z         "unit": {
2026-06-21T03:31:34.8743982Z           "complete": true,
2026-06-21T03:31:34.8744098Z           "evidence": [
2026-06-21T03:31:34.8744198Z             {
2026-06-21T03:31:34.8744332Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8744439Z               "line": 345
2026-06-21T03:31:34.8744540Z             },
2026-06-21T03:31:34.8744645Z             {
2026-06-21T03:31:34.8744778Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8744893Z               "line": 365
2026-06-21T03:31:34.8744993Z             }
2026-06-21T03:31:34.8745097Z           ]
2026-06-21T03:31:34.8745203Z         }
2026-06-21T03:31:34.8745303Z       }
2026-06-21T03:31:34.8745407Z     },
2026-06-21T03:31:34.8745508Z     {
2026-06-21T03:31:34.8745636Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T03:31:34.8745793Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T03:31:34.8745914Z       "requiredStages": [
2026-06-21T03:31:34.8746023Z         "impl",
2026-06-21T03:31:34.8746133Z         "unit"
2026-06-21T03:31:34.8746247Z       ],
2026-06-21T03:31:34.8746351Z       "stages": {
2026-06-21T03:31:34.8746463Z         "doc": {
2026-06-21T03:31:34.8746567Z           "complete": false,
2026-06-21T03:31:34.8746689Z           "evidence": []
2026-06-21T03:31:34.8746789Z         },
2026-06-21T03:31:34.8746893Z         "impl": {
2026-06-21T03:31:34.8747006Z           "complete": true,
2026-06-21T03:31:34.8747111Z           "evidence": [
2026-06-21T03:31:34.8747217Z             {
2026-06-21T03:31:34.8747349Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8747460Z               "line": 18
2026-06-21T03:31:34.8747565Z             },
2026-06-21T03:31:34.8747664Z             {
2026-06-21T03:31:34.8747817Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8747927Z               "line": 431
2026-06-21T03:31:34.8748036Z             }
2026-06-21T03:31:34.8748132Z           ]
2026-06-21T03:31:34.8748241Z         },
2026-06-21T03:31:34.8748346Z         "int": {
2026-06-21T03:31:34.8748466Z           "complete": false,
2026-06-21T03:31:34.8748580Z           "evidence": []
2026-06-21T03:31:34.8748685Z         },
2026-06-21T03:31:34.8748790Z         "unit": {
2026-06-21T03:31:34.8748899Z           "complete": true,
2026-06-21T03:31:34.8749096Z           "evidence": [
2026-06-21T03:31:34.8749199Z             {
2026-06-21T03:31:34.8749320Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8749453Z               "line": 881
2026-06-21T03:31:34.8749557Z             },
2026-06-21T03:31:34.8749661Z             {
2026-06-21T03:31:34.8749791Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8749904Z               "line": 891
2026-06-21T03:31:34.8750014Z             }
2026-06-21T03:31:34.8750110Z           ]
2026-06-21T03:31:34.8750219Z         }
2026-06-21T03:31:34.8750325Z       }
2026-06-21T03:31:34.8750429Z     },
2026-06-21T03:31:34.8750524Z     {
2026-06-21T03:31:34.8750634Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T03:31:34.8750815Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T03:31:34.8751035Z       "requiredStages": [
2026-06-21T03:31:34.8751140Z         "impl",
2026-06-21T03:31:34.8751245Z         "unit",
2026-06-21T03:31:34.8751345Z         "int"
2026-06-21T03:31:34.8751449Z       ],
2026-06-21T03:31:34.8751554Z       "stages": {
2026-06-21T03:31:34.8751665Z         "doc": {
2026-06-21T03:31:34.8751773Z           "complete": false,
2026-06-21T03:31:34.8751906Z           "evidence": []
2026-06-21T03:31:34.8752020Z         },
2026-06-21T03:31:34.8752127Z         "impl": {
2026-06-21T03:31:34.8752233Z           "complete": true,
2026-06-21T03:31:34.8752343Z           "evidence": [
2026-06-21T03:31:34.8752542Z             {
2026-06-21T03:31:34.8752676Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.8752790Z               "line": 19
2026-06-21T03:31:34.8752892Z             },
2026-06-21T03:31:34.8753000Z             {
2026-06-21T03:31:34.8753128Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T03:31:34.8753249Z               "line": 12
2026-06-21T03:31:34.8753354Z             },
2026-06-21T03:31:34.8753448Z             {
2026-06-21T03:31:34.8753578Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.8753683Z               "line": 301
2026-06-21T03:31:34.8753792Z             }
2026-06-21T03:31:34.8753888Z           ]
2026-06-21T03:31:34.8753996Z         },
2026-06-21T03:31:34.8754097Z         "int": {
2026-06-21T03:31:34.8754212Z           "complete": true,
2026-06-21T03:31:34.8754325Z           "evidence": [
2026-06-21T03:31:34.8754427Z             {
2026-06-21T03:31:34.8754575Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.8754687Z               "line": 259
2026-06-21T03:31:34.8754797Z             }
2026-06-21T03:31:34.8754901Z           ]
2026-06-21T03:31:34.8754999Z         },
2026-06-21T03:31:34.8755105Z         "unit": {
2026-06-21T03:31:34.8755215Z           "complete": true,
2026-06-21T03:31:34.8755323Z           "evidence": [
2026-06-21T03:31:34.8755434Z             {
2026-06-21T03:31:34.8755578Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.8755686Z               "line": 195
2026-06-21T03:31:34.8755792Z             },
2026-06-21T03:31:34.8755902Z             {
2026-06-21T03:31:34.8756034Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.8756140Z               "line": 202
2026-06-21T03:31:34.8756240Z             },
2026-06-21T03:31:34.8756345Z             {
2026-06-21T03:31:34.8756488Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:31:34.8756597Z               "line": 225
2026-06-21T03:31:34.8756708Z             },
2026-06-21T03:31:34.8756817Z             {
2026-06-21T03:31:34.8756950Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:31:34.8757061Z               "line": 106
2026-06-21T03:31:34.8757155Z             },
2026-06-21T03:31:34.8757259Z             {
2026-06-21T03:31:34.8757392Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:31:34.8757505Z               "line": 137
2026-06-21T03:31:34.8757609Z             },
2026-06-21T03:31:34.8757714Z             {
2026-06-21T03:31:34.8757838Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:31:34.8757952Z               "line": 161
2026-06-21T03:31:34.8758058Z             }
2026-06-21T03:31:34.8758163Z           ]
2026-06-21T03:31:34.8758267Z         }
2026-06-21T03:31:34.8758373Z       }
2026-06-21T03:31:34.8758473Z     },
2026-06-21T03:31:34.8758577Z     {
2026-06-21T03:31:34.8758702Z       "id": "REQ-SEAM-RESUME",
2026-06-21T03:31:34.8758911Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T03:31:34.8759107Z       "requiredStages": [
2026-06-21T03:31:34.8759212Z         "impl",
2026-06-21T03:31:34.8759313Z         "unit"
2026-06-21T03:31:34.8759425Z       ],
2026-06-21T03:31:34.8759531Z       "stages": {
2026-06-21T03:31:34.8759637Z         "doc": {
2026-06-21T03:31:34.8759754Z           "complete": false,
2026-06-21T03:31:34.8759962Z           "evidence": []
2026-06-21T03:31:34.8760069Z         },
2026-06-21T03:31:34.8760168Z         "impl": {
2026-06-21T03:31:34.8760293Z           "complete": true,
2026-06-21T03:31:34.8760398Z           "evidence": [
2026-06-21T03:31:34.8760502Z             {
2026-06-21T03:31:34.8760646Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.8760745Z               "line": 19
2026-06-21T03:31:34.8760851Z             }
2026-06-21T03:31:34.8760947Z           ]
2026-06-21T03:31:34.8761051Z         },
2026-06-21T03:31:34.8761156Z         "int": {
2026-06-21T03:31:34.8761266Z           "complete": false,
2026-06-21T03:31:34.8761465Z           "evidence": []
2026-06-21T03:31:34.8761567Z         },
2026-06-21T03:31:34.8761676Z         "unit": {
2026-06-21T03:31:34.8761790Z           "complete": true,
2026-06-21T03:31:34.8761900Z           "evidence": [
2026-06-21T03:31:34.8762004Z             {
2026-06-21T03:31:34.8762139Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.8762248Z               "line": 201
2026-06-21T03:31:34.8762352Z             },
2026-06-21T03:31:34.8762456Z             {
2026-06-21T03:31:34.8762594Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.8762697Z               "line": 223
2026-06-21T03:31:34.8762802Z             },
2026-06-21T03:31:34.8762903Z             {
2026-06-21T03:31:34.8763050Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:31:34.8763160Z               "line": 244
2026-06-21T03:31:34.8763256Z             }
2026-06-21T03:31:34.8763355Z           ]
2026-06-21T03:31:34.8763452Z         }
2026-06-21T03:31:34.8763552Z       }
2026-06-21T03:31:34.8763665Z     },
2026-06-21T03:31:34.8763772Z     {
2026-06-21T03:31:34.8763885Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T03:31:34.8764008Z       "title": "spawn-session seam",
2026-06-21T03:31:34.8764124Z       "requiredStages": [
2026-06-21T03:31:34.8764233Z         "impl",
2026-06-21T03:31:34.8764332Z         "unit"
2026-06-21T03:31:34.8764439Z       ],
2026-06-21T03:31:34.8764547Z       "stages": {
2026-06-21T03:31:34.8764642Z         "doc": {
2026-06-21T03:31:34.8764758Z           "complete": false,
2026-06-21T03:31:34.8764867Z           "evidence": []
2026-06-21T03:31:34.8764972Z         },
2026-06-21T03:31:34.8765083Z         "impl": {
2026-06-21T03:31:34.8765201Z           "complete": true,
2026-06-21T03:31:34.8765314Z           "evidence": [
2026-06-21T03:31:34.8765419Z             {
2026-06-21T03:31:34.8765555Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8768746Z               "line": 20
2026-06-21T03:31:34.8768890Z             }
2026-06-21T03:31:34.8769113Z           ]
2026-06-21T03:31:34.8769214Z         },
2026-06-21T03:31:34.8769342Z         "int": {
2026-06-21T03:31:34.8769480Z           "complete": false,
2026-06-21T03:31:34.8769605Z           "evidence": []
2026-06-21T03:31:34.8769710Z         },
2026-06-21T03:31:34.8769815Z         "unit": {
2026-06-21T03:31:34.8769925Z           "complete": true,
2026-06-21T03:31:34.8770038Z           "evidence": [
2026-06-21T03:31:34.8770140Z             {
2026-06-21T03:31:34.8770296Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8770411Z               "line": 608
2026-06-21T03:31:34.8770512Z             },
2026-06-21T03:31:34.8770601Z             {
2026-06-21T03:31:34.8770752Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8770863Z               "line": 615
2026-06-21T03:31:34.8770962Z             },
2026-06-21T03:31:34.8771057Z             {
2026-06-21T03:31:34.8771206Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8771325Z               "line": 721
2026-06-21T03:31:34.8771430Z             },
2026-06-21T03:31:34.8771525Z             {
2026-06-21T03:31:34.8771668Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8771769Z               "line": 727
2026-06-21T03:31:34.8771874Z             },
2026-06-21T03:31:34.8772113Z             {
2026-06-21T03:31:34.8772255Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8772360Z               "line": 752
2026-06-21T03:31:34.8772466Z             },
2026-06-21T03:31:34.8772569Z             {
2026-06-21T03:31:34.8772704Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:31:34.8772804Z               "line": 789
2026-06-21T03:31:34.8772912Z             }
2026-06-21T03:31:34.8773012Z           ]
2026-06-21T03:31:34.8773116Z         }
2026-06-21T03:31:34.8773224Z       }
2026-06-21T03:31:34.8773324Z     },
2026-06-21T03:31:34.8773430Z     {
2026-06-21T03:31:34.8773549Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T03:31:34.8773834Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T03:31:34.8773948Z       "requiredStages": [
2026-06-21T03:31:34.8774054Z         "impl",
2026-06-21T03:31:34.8774163Z         "unit"
2026-06-21T03:31:34.8774268Z       ],
2026-06-21T03:31:34.8774379Z       "stages": {
2026-06-21T03:31:34.8774483Z         "doc": {
2026-06-21T03:31:34.8774602Z           "complete": false,
2026-06-21T03:31:34.8774703Z           "evidence": []
2026-06-21T03:31:34.8774807Z         },
2026-06-21T03:31:34.8774912Z         "impl": {
2026-06-21T03:31:34.8775027Z           "complete": true,
2026-06-21T03:31:34.8775141Z           "evidence": [
2026-06-21T03:31:34.8775247Z             {
2026-06-21T03:31:34.8775412Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.8775522Z               "line": 28
2026-06-21T03:31:34.8775629Z             },
2026-06-21T03:31:34.8775732Z             {
2026-06-21T03:31:34.8775888Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.8776007Z               "line": 88
2026-06-21T03:31:34.8776111Z             }
2026-06-21T03:31:34.8776215Z           ]
2026-06-21T03:31:34.8776307Z         },
2026-06-21T03:31:34.8776416Z         "int": {
2026-06-21T03:31:34.8776535Z           "complete": false,
2026-06-21T03:31:34.8776650Z           "evidence": []
2026-06-21T03:31:34.8776754Z         },
2026-06-21T03:31:34.8776859Z         "unit": {
2026-06-21T03:31:34.8776969Z           "complete": true,
2026-06-21T03:31:34.8777069Z           "evidence": [
2026-06-21T03:31:34.8777178Z             {
2026-06-21T03:31:34.8777322Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.8777431Z               "line": 326
2026-06-21T03:31:34.8777537Z             },
2026-06-21T03:31:34.8777641Z             {
2026-06-21T03:31:34.8777804Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.8777909Z               "line": 337
2026-06-21T03:31:34.8778017Z             }
2026-06-21T03:31:34.8778119Z           ]
2026-06-21T03:31:34.8778224Z         }
2026-06-21T03:31:34.8778327Z       }
2026-06-21T03:31:34.8778427Z     },
2026-06-21T03:31:34.8778531Z     {
2026-06-21T03:31:34.8778639Z       "id": "REQ-SEC-1",
2026-06-21T03:31:34.8779150Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T03:31:34.8779274Z       "requiredStages": [
2026-06-21T03:31:34.8779378Z         "impl",
2026-06-21T03:31:34.8779503Z         "unit"
2026-06-21T03:31:34.8779593Z       ],
2026-06-21T03:31:34.8779702Z       "stages": {
2026-06-21T03:31:34.8779798Z         "doc": {
2026-06-21T03:31:34.8779902Z           "complete": false,
2026-06-21T03:31:34.8780012Z           "evidence": []
2026-06-21T03:31:34.8780104Z         },
2026-06-21T03:31:34.8780208Z         "impl": {
2026-06-21T03:31:34.8780317Z           "complete": true,
2026-06-21T03:31:34.8780423Z           "evidence": [
2026-06-21T03:31:34.8780532Z             {
2026-06-21T03:31:34.8780685Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8780786Z               "line": 86
2026-06-21T03:31:34.8780889Z             },
2026-06-21T03:31:34.8780995Z             {
2026-06-21T03:31:34.8781129Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8781337Z               "line": 116
2026-06-21T03:31:34.8781442Z             },
2026-06-21T03:31:34.8781546Z             {
2026-06-21T03:31:34.8781694Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8781805Z               "line": 130
2026-06-21T03:31:34.8781909Z             },
2026-06-21T03:31:34.8782010Z             {
2026-06-21T03:31:34.8782144Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8782247Z               "line": 109
2026-06-21T03:31:34.8782353Z             },
2026-06-21T03:31:34.8782462Z             {
2026-06-21T03:31:34.8782591Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8782791Z               "line": 130
2026-06-21T03:31:34.8782896Z             },
2026-06-21T03:31:34.8782997Z             {
2026-06-21T03:31:34.8783129Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8783244Z               "line": 143
2026-06-21T03:31:34.8783350Z             },
2026-06-21T03:31:34.8783458Z             {
2026-06-21T03:31:34.8783591Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8783705Z               "line": 209
2026-06-21T03:31:34.8783804Z             },
2026-06-21T03:31:34.8783894Z             {
2026-06-21T03:31:34.8784033Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8784147Z               "line": 235
2026-06-21T03:31:34.8784252Z             },
2026-06-21T03:31:34.8784352Z             {
2026-06-21T03:31:34.8784485Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8784596Z               "line": 5295
2026-06-21T03:31:34.8784696Z             }
2026-06-21T03:31:34.8784800Z           ]
2026-06-21T03:31:34.8784892Z         },
2026-06-21T03:31:34.8784986Z         "int": {
2026-06-21T03:31:34.8785105Z           "complete": false,
2026-06-21T03:31:34.8785211Z           "evidence": []
2026-06-21T03:31:34.8785320Z         },
2026-06-21T03:31:34.8785425Z         "unit": {
2026-06-21T03:31:34.8785540Z           "complete": true,
2026-06-21T03:31:34.8785644Z           "evidence": [
2026-06-21T03:31:34.8785744Z             {
2026-06-21T03:31:34.8785893Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8786001Z               "line": 142
2026-06-21T03:31:34.8786107Z             },
2026-06-21T03:31:34.8786203Z             {
2026-06-21T03:31:34.8786344Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8786458Z               "line": 194
2026-06-21T03:31:34.8786562Z             },
2026-06-21T03:31:34.8786666Z             {
2026-06-21T03:31:34.8786790Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:31:34.8786905Z               "line": 235
2026-06-21T03:31:34.8787009Z             },
2026-06-21T03:31:34.8787109Z             {
2026-06-21T03:31:34.8787258Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T03:31:34.8787366Z               "line": 140
2026-06-21T03:31:34.8787459Z             },
2026-06-21T03:31:34.8787563Z             {
2026-06-21T03:31:34.8787700Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8787806Z               "line": 247
2026-06-21T03:31:34.8787910Z             },
2026-06-21T03:31:34.8788020Z             {
2026-06-21T03:31:34.8788144Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8788258Z               "line": 277
2026-06-21T03:31:34.8788359Z             },
2026-06-21T03:31:34.8788459Z             {
2026-06-21T03:31:34.8788587Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8788693Z               "line": 310
2026-06-21T03:31:34.8788803Z             },
2026-06-21T03:31:34.8788906Z             {
2026-06-21T03:31:34.8789120Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8789228Z               "line": 329
2026-06-21T03:31:34.8789342Z             },
2026-06-21T03:31:34.8789443Z             {
2026-06-21T03:31:34.8789580Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8789800Z               "line": 362
2026-06-21T03:31:34.8789900Z             },
2026-06-21T03:31:34.8790011Z             {
2026-06-21T03:31:34.8790148Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:31:34.8790257Z               "line": 386
2026-06-21T03:31:34.8790363Z             },
2026-06-21T03:31:34.8790462Z             {
2026-06-21T03:31:34.8790587Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8790693Z               "line": 8296
2026-06-21T03:31:34.8790802Z             }
2026-06-21T03:31:34.8790901Z           ]
2026-06-21T03:31:34.8791002Z         }
2026-06-21T03:31:34.8791106Z       }
2026-06-21T03:31:34.8791202Z     },
2026-06-21T03:31:34.8791397Z     {
2026-06-21T03:31:34.8791521Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T03:31:34.8795270Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T03:31:34.8795447Z       "requiredStages": [
2026-06-21T03:31:34.8795556Z         "impl",
2026-06-21T03:31:34.8795660Z         "unit",
2026-06-21T03:31:34.8795766Z         "int"
2026-06-21T03:31:34.8795865Z       ],
2026-06-21T03:31:34.8795994Z       "stages": {
2026-06-21T03:31:34.8796096Z         "doc": {
2026-06-21T03:31:34.8796213Z           "complete": false,
2026-06-21T03:31:34.8796333Z           "evidence": []
2026-06-21T03:31:34.8796435Z         },
2026-06-21T03:31:34.8796537Z         "impl": {
2026-06-21T03:31:34.8796653Z           "complete": true,
2026-06-21T03:31:34.8796754Z           "evidence": [
2026-06-21T03:31:34.8796866Z             {
2026-06-21T03:31:34.8797019Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.8797137Z               "line": 1066
2026-06-21T03:31:34.8797240Z             },
2026-06-21T03:31:34.8797345Z             {
2026-06-21T03:31:34.8797498Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.8797607Z               "line": 1723
2026-06-21T03:31:34.8797704Z             },
2026-06-21T03:31:34.8797813Z             {
2026-06-21T03:31:34.8797940Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8798047Z               "line": 2850
2026-06-21T03:31:34.8798156Z             }
2026-06-21T03:31:34.8798255Z           ]
2026-06-21T03:31:34.8798357Z         },
2026-06-21T03:31:34.8798461Z         "int": {
2026-06-21T03:31:34.8798575Z           "complete": true,
2026-06-21T03:31:34.8798686Z           "evidence": [
2026-06-21T03:31:34.8798790Z             {
2026-06-21T03:31:34.8798934Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.8799128Z               "line": 189
2026-06-21T03:31:34.8799229Z             },
2026-06-21T03:31:34.8799325Z             {
2026-06-21T03:31:34.8799485Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:31:34.8799599Z               "line": 507
2026-06-21T03:31:34.8799703Z             }
2026-06-21T03:31:34.8799902Z           ]
2026-06-21T03:31:34.8799994Z         },
2026-06-21T03:31:34.8800093Z         "unit": {
2026-06-21T03:31:34.8800203Z           "complete": true,
2026-06-21T03:31:34.8800318Z           "evidence": [
2026-06-21T03:31:34.8800417Z             {
2026-06-21T03:31:34.8800556Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:31:34.8800666Z               "line": 952
2026-06-21T03:31:34.8800760Z             },
2026-06-21T03:31:34.8800856Z             {
2026-06-21T03:31:34.8800985Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8801099Z               "line": 7486
2026-06-21T03:31:34.8801205Z             }
2026-06-21T03:31:34.8801423Z           ]
2026-06-21T03:31:34.8801530Z         }
2026-06-21T03:31:34.8801633Z       }
2026-06-21T03:31:34.8801743Z     },
2026-06-21T03:31:34.8801840Z     {
2026-06-21T03:31:34.8801981Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T03:31:34.8809050Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T03:31:34.8809256Z       "requiredStages": [
2026-06-21T03:31:34.8809364Z         "doc",
2026-06-21T03:31:34.8809484Z         "impl",
2026-06-21T03:31:34.8809599Z         "unit",
2026-06-21T03:31:34.8809707Z         "int"
2026-06-21T03:31:34.8809809Z       ],
2026-06-21T03:31:34.8809918Z       "stages": {
2026-06-21T03:31:34.8810022Z         "doc": {
2026-06-21T03:31:34.8810140Z           "complete": true,
2026-06-21T03:31:34.8810235Z           "evidence": [
2026-06-21T03:31:34.8810343Z             {
2026-06-21T03:31:34.8810520Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T03:31:34.8810634Z               "line": 130
2026-06-21T03:31:34.8810753Z             },
2026-06-21T03:31:34.8810849Z             {
2026-06-21T03:31:34.8810982Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.8811077Z               "line": 96
2026-06-21T03:31:34.8811283Z             }
2026-06-21T03:31:34.8811382Z           ]
2026-06-21T03:31:34.8811488Z         },
2026-06-21T03:31:34.8811593Z         "impl": {
2026-06-21T03:31:34.8811716Z           "complete": true,
2026-06-21T03:31:34.8811822Z           "evidence": [
2026-06-21T03:31:34.8811926Z             {
2026-06-21T03:31:34.8812090Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.8812198Z               "line": 77
2026-06-21T03:31:34.8812303Z             },
2026-06-21T03:31:34.8812409Z             {
2026-06-21T03:31:34.8812570Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.8812676Z               "line": 183
2026-06-21T03:31:34.8812884Z             },
2026-06-21T03:31:34.8813003Z             {
2026-06-21T03:31:34.8813161Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8813265Z               "line": 222
2026-06-21T03:31:34.8813375Z             },
2026-06-21T03:31:34.8813471Z             {
2026-06-21T03:31:34.8813627Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.8813738Z               "line": 71
2026-06-21T03:31:34.8813847Z             },
2026-06-21T03:31:34.8813947Z             {
2026-06-21T03:31:34.8814091Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8814204Z               "line": 176
2026-06-21T03:31:34.8814300Z             }
2026-06-21T03:31:34.8814406Z           ]
2026-06-21T03:31:34.8814505Z         },
2026-06-21T03:31:34.8814630Z         "int": {
2026-06-21T03:31:34.8814753Z           "complete": true,
2026-06-21T03:31:34.8814867Z           "evidence": [
2026-06-21T03:31:34.8815002Z             {
2026-06-21T03:31:34.8815162Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T03:31:34.8815272Z               "line": 25
2026-06-21T03:31:34.8815376Z             }
2026-06-21T03:31:34.8815484Z           ]
2026-06-21T03:31:34.8815589Z         },
2026-06-21T03:31:34.8815685Z         "unit": {
2026-06-21T03:31:34.8815807Z           "complete": true,
2026-06-21T03:31:34.8815918Z           "evidence": [
2026-06-21T03:31:34.8816018Z             {
2026-06-21T03:31:34.8816170Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.8816286Z               "line": 341
2026-06-21T03:31:34.8816395Z             },
2026-06-21T03:31:34.8816494Z             {
2026-06-21T03:31:34.8816648Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:31:34.8816766Z               "line": 391
2026-06-21T03:31:34.8816887Z             },
2026-06-21T03:31:34.8816991Z             {
2026-06-21T03:31:34.8817143Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8817268Z               "line": 1244
2026-06-21T03:31:34.8817372Z             },
2026-06-21T03:31:34.8817482Z             {
2026-06-21T03:31:34.8817621Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.8817725Z               "line": 184
2026-06-21T03:31:34.8817831Z             },
2026-06-21T03:31:34.8817945Z             {
2026-06-21T03:31:34.8818096Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.8818205Z               "line": 208
2026-06-21T03:31:34.8818313Z             },
2026-06-21T03:31:34.8818417Z             {
2026-06-21T03:31:34.8818566Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.8818679Z               "line": 236
2026-06-21T03:31:34.8818785Z             },
2026-06-21T03:31:34.8818885Z             {
2026-06-21T03:31:34.8819100Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:31:34.8819214Z               "line": 945
2026-06-21T03:31:34.8819328Z             }
2026-06-21T03:31:34.8819477Z           ]
2026-06-21T03:31:34.8819581Z         }
2026-06-21T03:31:34.8819686Z       }
2026-06-21T03:31:34.8819797Z     },
2026-06-21T03:31:34.8819900Z     {
2026-06-21T03:31:34.8820020Z       "id": "REQ-SHELL-1",
2026-06-21T03:31:34.8820960Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T03:31:34.8821194Z       "requiredStages": [
2026-06-21T03:31:34.8821303Z         "impl",
2026-06-21T03:31:34.8821414Z         "unit",
2026-06-21T03:31:34.8821519Z         "int"
2026-06-21T03:31:34.8821623Z       ],
2026-06-21T03:31:34.8821734Z       "stages": {
2026-06-21T03:31:34.8821838Z         "doc": {
2026-06-21T03:31:34.8821952Z           "complete": false,
2026-06-21T03:31:34.8822158Z           "evidence": []
2026-06-21T03:31:34.8822262Z         },
2026-06-21T03:31:34.8822378Z         "impl": {
2026-06-21T03:31:34.8822487Z           "complete": true,
2026-06-21T03:31:34.8822591Z           "evidence": [
2026-06-21T03:31:34.8822688Z             {
2026-06-21T03:31:34.8822835Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8822955Z               "line": 189
2026-06-21T03:31:34.8823059Z             },
2026-06-21T03:31:34.8823168Z             {
2026-06-21T03:31:34.8823501Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8823806Z               "line": 268
2026-06-21T03:31:34.8824078Z             },
2026-06-21T03:31:34.8824284Z             {
2026-06-21T03:31:34.8824536Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8824841Z               "line": 27
2026-06-21T03:31:34.8825065Z             },
2026-06-21T03:31:34.8825266Z             {
2026-06-21T03:31:34.8825553Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8825836Z               "line": 52
2026-06-21T03:31:34.8826058Z             },
2026-06-21T03:31:34.8826254Z             {
2026-06-21T03:31:34.8826502Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8826793Z               "line": 144
2026-06-21T03:31:34.8827064Z             },
2026-06-21T03:31:34.8827279Z             {
2026-06-21T03:31:34.8827523Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8827804Z               "line": 176
2026-06-21T03:31:34.8828018Z             },
2026-06-21T03:31:34.8828213Z             {
2026-06-21T03:31:34.8828458Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8828751Z               "line": 22
2026-06-21T03:31:34.8829068Z             },
2026-06-21T03:31:34.8829287Z             {
2026-06-21T03:31:34.8829545Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8829846Z               "line": 65
2026-06-21T03:31:34.8830066Z             },
2026-06-21T03:31:34.8830279Z             {
2026-06-21T03:31:34.8830541Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8830838Z               "line": 76
2026-06-21T03:31:34.8831072Z             },
2026-06-21T03:31:34.8831280Z             {
2026-06-21T03:31:34.8831521Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8831806Z               "line": 151
2026-06-21T03:31:34.8832031Z             },
2026-06-21T03:31:34.8832232Z             {
2026-06-21T03:31:34.8832469Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8832751Z               "line": 210
2026-06-21T03:31:34.8832980Z             },
2026-06-21T03:31:34.8833171Z             {
2026-06-21T03:31:34.8833413Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8833690Z               "line": 259
2026-06-21T03:31:34.8833906Z             },
2026-06-21T03:31:34.8834108Z             {
2026-06-21T03:31:34.8834347Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8834643Z               "line": 281
2026-06-21T03:31:34.8834863Z             },
2026-06-21T03:31:34.8835067Z             {
2026-06-21T03:31:34.8835301Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8835582Z               "line": 294
2026-06-21T03:31:34.8835916Z             },
2026-06-21T03:31:34.8836122Z             {
2026-06-21T03:31:34.8836363Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8836646Z               "line": 217
2026-06-21T03:31:34.8836871Z             },
2026-06-21T03:31:34.8837081Z             {
2026-06-21T03:31:34.8837363Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8837644Z               "line": 233
2026-06-21T03:31:34.8837873Z             },
2026-06-21T03:31:34.8838101Z             {
2026-06-21T03:31:34.8838346Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.8838632Z               "line": 41
2026-06-21T03:31:34.8839079Z             },
2026-06-21T03:31:34.8839321Z             {
2026-06-21T03:31:34.8839571Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.8839872Z               "line": 222
2026-06-21T03:31:34.8840091Z             },
2026-06-21T03:31:34.8840297Z             {
2026-06-21T03:31:34.8840544Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:31:34.8840830Z               "line": 173
2026-06-21T03:31:34.8841054Z             },
2026-06-21T03:31:34.8841265Z             {
2026-06-21T03:31:34.8841494Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.8841773Z               "line": 354
2026-06-21T03:31:34.8842000Z             },
2026-06-21T03:31:34.8842200Z             {
2026-06-21T03:31:34.8842424Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.8842691Z               "line": 419
2026-06-21T03:31:34.8842906Z             },
2026-06-21T03:31:34.8843112Z             {
2026-06-21T03:31:34.8843354Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8843635Z               "line": 333
2026-06-21T03:31:34.8843860Z             },
2026-06-21T03:31:34.8844061Z             {
2026-06-21T03:31:34.8844284Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8844555Z               "line": 6320
2026-06-21T03:31:34.8844784Z             },
2026-06-21T03:31:34.8844988Z             {
2026-06-21T03:31:34.8845222Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8845490Z               "line": 6470
2026-06-21T03:31:34.8845714Z             },
2026-06-21T03:31:34.8845913Z             {
2026-06-21T03:31:34.8846133Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8846396Z               "line": 6646
2026-06-21T03:31:34.8846610Z             }
2026-06-21T03:31:34.8846819Z           ]
2026-06-21T03:31:34.8847033Z         },
2026-06-21T03:31:34.8847269Z         "int": {
2026-06-21T03:31:34.8847493Z           "complete": true,
2026-06-21T03:31:34.8847723Z           "evidence": [
2026-06-21T03:31:34.8847957Z             {
2026-06-21T03:31:34.8848204Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8848504Z               "line": 713
2026-06-21T03:31:34.8848728Z             },
2026-06-21T03:31:34.8848929Z             {
2026-06-21T03:31:34.8849291Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:31:34.8849578Z               "line": 8
2026-06-21T03:31:34.8849795Z             },
2026-06-21T03:31:34.8850003Z             {
2026-06-21T03:31:34.8850256Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:31:34.8850542Z               "line": 49
2026-06-21T03:31:34.8850756Z             },
2026-06-21T03:31:34.8850962Z             {
2026-06-21T03:31:34.8851205Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8851482Z               "line": 778
2026-06-21T03:31:34.8851705Z             },
2026-06-21T03:31:34.8851905Z             {
2026-06-21T03:31:34.8852135Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8852429Z               "line": 1213
2026-06-21T03:31:34.8852650Z             },
2026-06-21T03:31:34.8852847Z             {
2026-06-21T03:31:34.8853090Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:31:34.8853386Z               "line": 17
2026-06-21T03:31:34.8853739Z             },
2026-06-21T03:31:34.8853938Z             {
2026-06-21T03:31:34.8854177Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:31:34.8854457Z               "line": 14
2026-06-21T03:31:34.8854678Z             }
2026-06-21T03:31:34.8854882Z           ]
2026-06-21T03:31:34.8855092Z         },
2026-06-21T03:31:34.8855291Z         "unit": {
2026-06-21T03:31:34.8855501Z           "complete": true,
2026-06-21T03:31:34.8855740Z           "evidence": [
2026-06-21T03:31:34.8862677Z             {
2026-06-21T03:31:34.8863022Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8863320Z               "line": 246
2026-06-21T03:31:34.8863721Z             },
2026-06-21T03:31:34.8863927Z             {
2026-06-21T03:31:34.8864168Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8864464Z               "line": 279
2026-06-21T03:31:34.8864684Z             },
2026-06-21T03:31:34.8864881Z             {
2026-06-21T03:31:34.8865127Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8865414Z               "line": 319
2026-06-21T03:31:34.8865619Z             },
2026-06-21T03:31:34.8865818Z             {
2026-06-21T03:31:34.8866046Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8866319Z               "line": 599
2026-06-21T03:31:34.8866539Z             },
2026-06-21T03:31:34.8866738Z             {
2026-06-21T03:31:34.8866977Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8867258Z               "line": 672
2026-06-21T03:31:34.8867474Z             },
2026-06-21T03:31:34.8867668Z             {
2026-06-21T03:31:34.8867906Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8868186Z               "line": 816
2026-06-21T03:31:34.8868390Z             },
2026-06-21T03:31:34.8868585Z             {
2026-06-21T03:31:34.8868814Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.8869172Z               "line": 595
2026-06-21T03:31:34.8869401Z             },
2026-06-21T03:31:34.8869629Z             {
2026-06-21T03:31:34.8869867Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:31:34.8870148Z               "line": 399
2026-06-21T03:31:34.8870360Z             },
2026-06-21T03:31:34.8870554Z             {
2026-06-21T03:31:34.8870768Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8871039Z               "line": 8976
2026-06-21T03:31:34.8871257Z             },
2026-06-21T03:31:34.8871457Z             {
2026-06-21T03:31:34.8871677Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8871925Z               "line": 9300
2026-06-21T03:31:34.8872148Z             },
2026-06-21T03:31:34.8872344Z             {
2026-06-21T03:31:34.8872559Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8872820Z               "line": 9717
2026-06-21T03:31:34.8873040Z             }
2026-06-21T03:31:34.8873237Z           ]
2026-06-21T03:31:34.8873425Z         }
2026-06-21T03:31:34.8873610Z       }
2026-06-21T03:31:34.8873804Z     },
2026-06-21T03:31:34.8873995Z     {
2026-06-21T03:31:34.8874191Z       "id": "REQ-SHELL-2",
2026-06-21T03:31:34.8875926Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T03:31:34.8877351Z       "requiredStages": [
2026-06-21T03:31:34.8877579Z         "impl",
2026-06-21T03:31:34.8877804Z         "unit",
2026-06-21T03:31:34.8878015Z         "int"
2026-06-21T03:31:34.8878214Z       ],
2026-06-21T03:31:34.8878415Z       "stages": {
2026-06-21T03:31:34.8878623Z         "doc": {
2026-06-21T03:31:34.8879055Z           "complete": false,
2026-06-21T03:31:34.8879317Z           "evidence": []
2026-06-21T03:31:34.8879574Z         },
2026-06-21T03:31:34.8879779Z         "impl": {
2026-06-21T03:31:34.8879990Z           "complete": true,
2026-06-21T03:31:34.8880223Z           "evidence": [
2026-06-21T03:31:34.8880442Z             {
2026-06-21T03:31:34.8880694Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.8881000Z               "line": 217
2026-06-21T03:31:34.8881221Z             },
2026-06-21T03:31:34.8881433Z             {
2026-06-21T03:31:34.8881669Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.8881951Z               "line": 403
2026-06-21T03:31:34.8882285Z             },
2026-06-21T03:31:34.8882524Z             {
2026-06-21T03:31:34.8882785Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:31:34.8883085Z               "line": 250
2026-06-21T03:31:34.8883309Z             },
2026-06-21T03:31:34.8883529Z             {
2026-06-21T03:31:34.8883792Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.8884075Z               "line": 403
2026-06-21T03:31:34.8884293Z             },
2026-06-21T03:31:34.8884489Z             {
2026-06-21T03:31:34.8884727Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8885008Z               "line": 30
2026-06-21T03:31:34.8885246Z             },
2026-06-21T03:31:34.8885452Z             {
2026-06-21T03:31:34.8885686Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8885981Z               "line": 409
2026-06-21T03:31:34.8886191Z             },
2026-06-21T03:31:34.8886382Z             {
2026-06-21T03:31:34.8886635Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8886919Z               "line": 445
2026-06-21T03:31:34.8887144Z             },
2026-06-21T03:31:34.8887354Z             {
2026-06-21T03:31:34.8887592Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8887873Z               "line": 660
2026-06-21T03:31:34.8888097Z             },
2026-06-21T03:31:34.8888284Z             {
2026-06-21T03:31:34.8888522Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.8888812Z               "line": 348
2026-06-21T03:31:34.8889116Z             },
2026-06-21T03:31:34.8889316Z             {
2026-06-21T03:31:34.8889557Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8889844Z               "line": 115
2026-06-21T03:31:34.8890062Z             },
2026-06-21T03:31:34.8890268Z             {
2026-06-21T03:31:34.8890512Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8890808Z               "line": 120
2026-06-21T03:31:34.8891030Z             },
2026-06-21T03:31:34.8891231Z             {
2026-06-21T03:31:34.8891490Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8891781Z               "line": 374
2026-06-21T03:31:34.8892007Z             },
2026-06-21T03:31:34.8892211Z             {
2026-06-21T03:31:34.8892464Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8892745Z               "line": 500
2026-06-21T03:31:34.8892973Z             },
2026-06-21T03:31:34.8893169Z             {
2026-06-21T03:31:34.8893413Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8893689Z               "line": 24
2026-06-21T03:31:34.8893912Z             },
2026-06-21T03:31:34.8894108Z             {
2026-06-21T03:31:34.8894348Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8894636Z               "line": 76
2026-06-21T03:31:34.8894862Z             },
2026-06-21T03:31:34.8895069Z             {
2026-06-21T03:31:34.8895312Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8895592Z               "line": 154
2026-06-21T03:31:34.8895816Z             },
2026-06-21T03:31:34.8896021Z             {
2026-06-21T03:31:34.8896256Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8896660Z               "line": 177
2026-06-21T03:31:34.8896885Z             },
2026-06-21T03:31:34.8897094Z             {
2026-06-21T03:31:34.8897341Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8897628Z               "line": 273
2026-06-21T03:31:34.8897842Z             },
2026-06-21T03:31:34.8898047Z             {
2026-06-21T03:31:34.8898295Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8898576Z               "line": 456
2026-06-21T03:31:34.8898801Z             },
2026-06-21T03:31:34.8899087Z             {
2026-06-21T03:31:34.8899349Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8899767Z               "line": 538
2026-06-21T03:31:34.8899979Z             },
2026-06-21T03:31:34.8900185Z             {
2026-06-21T03:31:34.8900428Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:31:34.8900714Z               "line": 27
2026-06-21T03:31:34.8900933Z             },
2026-06-21T03:31:34.8901134Z             {
2026-06-21T03:31:34.8901377Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:31:34.8901668Z               "line": 48
2026-06-21T03:31:34.8901887Z             },
2026-06-21T03:31:34.8902083Z             {
2026-06-21T03:31:34.8902317Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8902600Z               "line": 517
2026-06-21T03:31:34.8902818Z             },
2026-06-21T03:31:34.8903019Z             {
2026-06-21T03:31:34.8903251Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8903523Z               "line": 1921
2026-06-21T03:31:34.8903744Z             },
2026-06-21T03:31:34.8903973Z             {
2026-06-21T03:31:34.8904196Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8904458Z               "line": 6334
2026-06-21T03:31:34.8904687Z             },
2026-06-21T03:31:34.8904884Z             {
2026-06-21T03:31:34.8905111Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8905389Z               "line": 6395
2026-06-21T03:31:34.8905604Z             },
2026-06-21T03:31:34.8905799Z             {
2026-06-21T03:31:34.8906019Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8906310Z               "line": 6423
2026-06-21T03:31:34.8906549Z             },
2026-06-21T03:31:34.8906743Z             {
2026-06-21T03:31:34.8906968Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8907234Z               "line": 6477
2026-06-21T03:31:34.8907465Z             },
2026-06-21T03:31:34.8907673Z             {
2026-06-21T03:31:34.8907883Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8908155Z               "line": 6732
2026-06-21T03:31:34.8908388Z             },
2026-06-21T03:31:34.8908592Z             {
2026-06-21T03:31:34.8908817Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8909160Z               "line": 6792
2026-06-21T03:31:34.8909395Z             },
2026-06-21T03:31:34.8909594Z             {
2026-06-21T03:31:34.8909832Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.8910105Z               "line": 298
2026-06-21T03:31:34.8910317Z             },
2026-06-21T03:31:34.8910521Z             {
2026-06-21T03:31:34.8910755Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.8911031Z               "line": 339
2026-06-21T03:31:34.8911259Z             }
2026-06-21T03:31:34.8911455Z           ]
2026-06-21T03:31:34.8911656Z         },
2026-06-21T03:31:34.8911855Z         "int": {
2026-06-21T03:31:34.8912080Z           "complete": true,
2026-06-21T03:31:34.8912323Z           "evidence": [
2026-06-21T03:31:34.8912538Z             {
2026-06-21T03:31:34.8912799Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.8913094Z               "line": 706
2026-06-21T03:31:34.8913317Z             },
2026-06-21T03:31:34.8913526Z             {
2026-06-21T03:31:34.8913773Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8914069Z               "line": 778
2026-06-21T03:31:34.8914398Z             },
2026-06-21T03:31:34.8914594Z             {
2026-06-21T03:31:34.8914843Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8915139Z               "line": 1213
2026-06-21T03:31:34.8915371Z             },
2026-06-21T03:31:34.8915567Z             {
2026-06-21T03:31:34.8915818Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T03:31:34.8916107Z               "line": 18
2026-06-21T03:31:34.8916335Z             }
2026-06-21T03:31:34.8916537Z           ]
2026-06-21T03:31:34.8916737Z         },
2026-06-21T03:31:34.8916941Z         "unit": {
2026-06-21T03:31:34.8917280Z           "complete": true,
2026-06-21T03:31:34.8917519Z           "evidence": [
2026-06-21T03:31:34.8917734Z             {
2026-06-21T03:31:34.8917977Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8918263Z               "line": 744
2026-06-21T03:31:34.8918480Z             },
2026-06-21T03:31:34.8918686Z             {
2026-06-21T03:31:34.8918923Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:31:34.8919292Z               "line": 796
2026-06-21T03:31:34.8919534Z             },
2026-06-21T03:31:34.8919730Z             {
2026-06-21T03:31:34.8919974Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8920265Z               "line": 705
2026-06-21T03:31:34.8920483Z             },
2026-06-21T03:31:34.8920678Z             {
2026-06-21T03:31:34.8920921Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8921214Z               "line": 754
2026-06-21T03:31:34.8921433Z             },
2026-06-21T03:31:34.8921644Z             {
2026-06-21T03:31:34.8921887Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8922164Z               "line": 778
2026-06-21T03:31:34.8922392Z             },
2026-06-21T03:31:34.8922587Z             {
2026-06-21T03:31:34.8922837Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8923127Z               "line": 603
2026-06-21T03:31:34.8923351Z             },
2026-06-21T03:31:34.8923569Z             {
2026-06-21T03:31:34.8923812Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8924101Z               "line": 624
2026-06-21T03:31:34.8924314Z             },
2026-06-21T03:31:34.8924520Z             {
2026-06-21T03:31:34.8924764Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8925045Z               "line": 660
2026-06-21T03:31:34.8925273Z             },
2026-06-21T03:31:34.8925488Z             {
2026-06-21T03:31:34.8925737Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8926023Z               "line": 714
2026-06-21T03:31:34.8926240Z             },
2026-06-21T03:31:34.8926430Z             {
2026-06-21T03:31:34.8926672Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8926958Z               "line": 732
2026-06-21T03:31:34.8927186Z             },
2026-06-21T03:31:34.8927401Z             {
2026-06-21T03:31:34.8927636Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8927922Z               "line": 766
2026-06-21T03:31:34.8928135Z             },
2026-06-21T03:31:34.8928336Z             {
2026-06-21T03:31:34.8928580Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:31:34.8928862Z               "line": 841
2026-06-21T03:31:34.8929184Z             },
2026-06-21T03:31:34.8929393Z             {
2026-06-21T03:31:34.8929642Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:31:34.8929932Z               "line": 85
2026-06-21T03:31:34.8930152Z             },
2026-06-21T03:31:34.8930361Z             {
2026-06-21T03:31:34.8930590Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8930868Z               "line": 8044
2026-06-21T03:31:34.8931091Z             },
2026-06-21T03:31:34.8931281Z             {
2026-06-21T03:31:34.8931514Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8931899Z               "line": 9054
2026-06-21T03:31:34.8932128Z             },
2026-06-21T03:31:34.8932322Z             {
2026-06-21T03:31:34.8932547Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8932819Z               "line": 9124
2026-06-21T03:31:34.8933029Z             },
2026-06-21T03:31:34.8933223Z             {
2026-06-21T03:31:34.8933457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8933726Z               "line": 9162
2026-06-21T03:31:34.8933949Z             }
2026-06-21T03:31:34.8934148Z           ]
2026-06-21T03:31:34.8934348Z         }
2026-06-21T03:31:34.8934541Z       }
2026-06-21T03:31:34.8934837Z     },
2026-06-21T03:31:34.8935038Z     {
2026-06-21T03:31:34.8935242Z       "id": "REQ-SHELL-3",
2026-06-21T03:31:34.8937261Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T03:31:34.8939073Z       "requiredStages": [
2026-06-21T03:31:34.8939306Z         "impl",
2026-06-21T03:31:34.8939512Z         "unit",
2026-06-21T03:31:34.8939715Z         "int"
2026-06-21T03:31:34.8939921Z       ],
2026-06-21T03:31:34.8940126Z       "stages": {
2026-06-21T03:31:34.8940339Z         "doc": {
2026-06-21T03:31:34.8940555Z           "complete": false,
2026-06-21T03:31:34.8940803Z           "evidence": []
2026-06-21T03:31:34.8941027Z         },
2026-06-21T03:31:34.8941232Z         "impl": {
2026-06-21T03:31:34.8941452Z           "complete": true,
2026-06-21T03:31:34.8941690Z           "evidence": [
2026-06-21T03:31:34.8941922Z             {
2026-06-21T03:31:34.8942167Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.8942459Z               "line": 229
2026-06-21T03:31:34.8942683Z             },
2026-06-21T03:31:34.8942873Z             {
2026-06-21T03:31:34.8943126Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8943417Z               "line": 36
2026-06-21T03:31:34.8943637Z             },
2026-06-21T03:31:34.8943851Z             {
2026-06-21T03:31:34.8944089Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8944374Z               "line": 137
2026-06-21T03:31:34.8944601Z             },
2026-06-21T03:31:34.8944807Z             {
2026-06-21T03:31:34.8945039Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8945326Z               "line": 153
2026-06-21T03:31:34.8945541Z             },
2026-06-21T03:31:34.8945754Z             {
2026-06-21T03:31:34.8950152Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8950537Z               "line": 165
2026-06-21T03:31:34.8950762Z             },
2026-06-21T03:31:34.8950968Z             {
2026-06-21T03:31:34.8951209Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8951500Z               "line": 242
2026-06-21T03:31:34.8951716Z             },
2026-06-21T03:31:34.8951912Z             {
2026-06-21T03:31:34.8952158Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8952434Z               "line": 267
2026-06-21T03:31:34.8952653Z             },
2026-06-21T03:31:34.8952856Z             {
2026-06-21T03:31:34.8953085Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8953372Z               "line": 293
2026-06-21T03:31:34.8953592Z             },
2026-06-21T03:31:34.8953795Z             {
2026-06-21T03:31:34.8954029Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:31:34.8954306Z               "line": 51
2026-06-21T03:31:34.8954682Z             },
2026-06-21T03:31:34.8954879Z             {
2026-06-21T03:31:34.8955132Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8955411Z               "line": 333
2026-06-21T03:31:34.8955628Z             },
2026-06-21T03:31:34.8955824Z             {
2026-06-21T03:31:34.8956067Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8956334Z               "line": 373
2026-06-21T03:31:34.8956540Z             },
2026-06-21T03:31:34.8956740Z             {
2026-06-21T03:31:34.8956977Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8957259Z               "line": 602
2026-06-21T03:31:34.8957583Z             },
2026-06-21T03:31:34.8957788Z             {
2026-06-21T03:31:34.8958030Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8958319Z               "line": 132
2026-06-21T03:31:34.8958538Z             },
2026-06-21T03:31:34.8958739Z             {
2026-06-21T03:31:34.8959101Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8959387Z               "line": 448
2026-06-21T03:31:34.8959597Z             },
2026-06-21T03:31:34.8959788Z             {
2026-06-21T03:31:34.8960026Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:31:34.8960308Z               "line": 74
2026-06-21T03:31:34.8960528Z             },
2026-06-21T03:31:34.8960726Z             {
2026-06-21T03:31:34.8960965Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8961069Z               "line": 605
2026-06-21T03:31:34.8961178Z             },
2026-06-21T03:31:34.8961275Z             {
2026-06-21T03:31:34.8961417Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8961523Z               "line": 396
2026-06-21T03:31:34.8961628Z             },
2026-06-21T03:31:34.8961737Z             {
2026-06-21T03:31:34.8961862Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8961975Z               "line": 6518
2026-06-21T03:31:34.8962084Z             }
2026-06-21T03:31:34.8962186Z           ]
2026-06-21T03:31:34.8962285Z         },
2026-06-21T03:31:34.8962390Z         "int": {
2026-06-21T03:31:34.8962501Z           "complete": true,
2026-06-21T03:31:34.8962614Z           "evidence": [
2026-06-21T03:31:34.8962709Z             {
2026-06-21T03:31:34.8962858Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8962971Z               "line": 1262
2026-06-21T03:31:34.8963075Z             },
2026-06-21T03:31:34.8963180Z             {
2026-06-21T03:31:34.8963316Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T03:31:34.8963421Z               "line": 17
2026-06-21T03:31:34.8963527Z             }
2026-06-21T03:31:34.8963631Z           ]
2026-06-21T03:31:34.8963731Z         },
2026-06-21T03:31:34.8963837Z         "unit": {
2026-06-21T03:31:34.8963951Z           "complete": true,
2026-06-21T03:31:34.8964060Z           "evidence": [
2026-06-21T03:31:34.8964166Z             {
2026-06-21T03:31:34.8964307Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8964414Z               "line": 311
2026-06-21T03:31:34.8964518Z             },
2026-06-21T03:31:34.8964618Z             {
2026-06-21T03:31:34.8964762Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8964871Z               "line": 325
2026-06-21T03:31:34.8964975Z             },
2026-06-21T03:31:34.8965072Z             {
2026-06-21T03:31:34.8965214Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8965319Z               "line": 343
2026-06-21T03:31:34.8965435Z             },
2026-06-21T03:31:34.8965523Z             {
2026-06-21T03:31:34.8965663Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8965768Z               "line": 364
2026-06-21T03:31:34.8965871Z             },
2026-06-21T03:31:34.8965976Z             {
2026-06-21T03:31:34.8966109Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:31:34.8966322Z               "line": 376
2026-06-21T03:31:34.8966427Z             },
2026-06-21T03:31:34.8966531Z             {
2026-06-21T03:31:34.8966671Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8966781Z               "line": 897
2026-06-21T03:31:34.8966884Z             },
2026-06-21T03:31:34.8966990Z             {
2026-06-21T03:31:34.8967137Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8967247Z               "line": 957
2026-06-21T03:31:34.8967353Z             },
2026-06-21T03:31:34.8967462Z             {
2026-06-21T03:31:34.8967605Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:31:34.8967814Z               "line": 338
2026-06-21T03:31:34.8967915Z             },
2026-06-21T03:31:34.8968015Z             {
2026-06-21T03:31:34.8968148Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.8968259Z               "line": 769
2026-06-21T03:31:34.8968367Z             },
2026-06-21T03:31:34.8968471Z             {
2026-06-21T03:31:34.8968605Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8968717Z               "line": 8836
2026-06-21T03:31:34.8968816Z             }
2026-06-21T03:31:34.8968917Z           ]
2026-06-21T03:31:34.8969112Z         }
2026-06-21T03:31:34.8969218Z       }
2026-06-21T03:31:34.8969318Z     },
2026-06-21T03:31:34.8969413Z     {
2026-06-21T03:31:34.8969513Z       "id": "REQ-SHELL-4",
2026-06-21T03:31:34.8971381Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T03:31:34.8971516Z       "requiredStages": [
2026-06-21T03:31:34.8971615Z         "doc",
2026-06-21T03:31:34.8971724Z         "impl",
2026-06-21T03:31:34.8971825Z         "unit",
2026-06-21T03:31:34.8971934Z         "int"
2026-06-21T03:31:34.8972039Z       ],
2026-06-21T03:31:34.8972145Z       "stages": {
2026-06-21T03:31:34.8972249Z         "doc": {
2026-06-21T03:31:34.8972354Z           "complete": true,
2026-06-21T03:31:34.8972469Z           "evidence": [
2026-06-21T03:31:34.8972569Z             {
2026-06-21T03:31:34.8972678Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8972793Z               "line": 281
2026-06-21T03:31:34.8972898Z             },
2026-06-21T03:31:34.8973003Z             {
2026-06-21T03:31:34.8973250Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T03:31:34.8973361Z               "line": 88
2026-06-21T03:31:34.8973456Z             }
2026-06-21T03:31:34.8973555Z           ]
2026-06-21T03:31:34.8973654Z         },
2026-06-21T03:31:34.8973764Z         "impl": {
2026-06-21T03:31:34.8973881Z           "complete": true,
2026-06-21T03:31:34.8973981Z           "evidence": [
2026-06-21T03:31:34.8974087Z             {
2026-06-21T03:31:34.8974233Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.8974354Z               "line": 243
2026-06-21T03:31:34.8974463Z             },
2026-06-21T03:31:34.8974553Z             {
2026-06-21T03:31:34.8974707Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:31:34.8974816Z               "line": 61
2026-06-21T03:31:34.8974916Z             },
2026-06-21T03:31:34.8975022Z             {
2026-06-21T03:31:34.8975169Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8975279Z               "line": 218
2026-06-21T03:31:34.8975379Z             },
2026-06-21T03:31:34.8975484Z             {
2026-06-21T03:31:34.8975623Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8975865Z               "line": 245
2026-06-21T03:31:34.8975975Z             },
2026-06-21T03:31:34.8976084Z             {
2026-06-21T03:31:34.8976233Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8976338Z               "line": 566
2026-06-21T03:31:34.8976445Z             },
2026-06-21T03:31:34.8976550Z             {
2026-06-21T03:31:34.8976692Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8976810Z               "line": 1141
2026-06-21T03:31:34.8976910Z             },
2026-06-21T03:31:34.8977016Z             {
2026-06-21T03:31:34.8977154Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8977364Z               "line": 1153
2026-06-21T03:31:34.8977468Z             },
2026-06-21T03:31:34.8977569Z             {
2026-06-21T03:31:34.8977712Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8977816Z               "line": 1194
2026-06-21T03:31:34.8977927Z             },
2026-06-21T03:31:34.8978036Z             {
2026-06-21T03:31:34.8978185Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8978293Z               "line": 456
2026-06-21T03:31:34.8978398Z             },
2026-06-21T03:31:34.8978504Z             {
2026-06-21T03:31:34.8978650Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8978756Z               "line": 44
2026-06-21T03:31:34.8978857Z             },
2026-06-21T03:31:34.8979036Z             {
2026-06-21T03:31:34.8979179Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8979286Z               "line": 208
2026-06-21T03:31:34.8979395Z             },
2026-06-21T03:31:34.8979492Z             {
2026-06-21T03:31:34.8979639Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8979749Z               "line": 227
2026-06-21T03:31:34.8979854Z             },
2026-06-21T03:31:34.8979958Z             {
2026-06-21T03:31:34.8980103Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8980217Z               "line": 253
2026-06-21T03:31:34.8980321Z             },
2026-06-21T03:31:34.8980422Z             {
2026-06-21T03:31:34.8980560Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8980678Z               "line": 272
2026-06-21T03:31:34.8980785Z             },
2026-06-21T03:31:34.8980894Z             {
2026-06-21T03:31:34.8981042Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8981142Z               "line": 392
2026-06-21T03:31:34.8981251Z             },
2026-06-21T03:31:34.8981352Z             {
2026-06-21T03:31:34.8981498Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8981614Z               "line": 421
2026-06-21T03:31:34.8981715Z             },
2026-06-21T03:31:34.8981818Z             {
2026-06-21T03:31:34.8981960Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8982071Z               "line": 439
2026-06-21T03:31:34.8982170Z             },
2026-06-21T03:31:34.8982275Z             {
2026-06-21T03:31:34.8982419Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8982523Z               "line": 458
2026-06-21T03:31:34.8982624Z             },
2026-06-21T03:31:34.8982728Z             {
2026-06-21T03:31:34.8982881Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8982982Z               "line": 486
2026-06-21T03:31:34.8983086Z             },
2026-06-21T03:31:34.8983195Z             {
2026-06-21T03:31:34.8983335Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8983439Z               "line": 624
2026-06-21T03:31:34.8983543Z             },
2026-06-21T03:31:34.8983645Z             {
2026-06-21T03:31:34.8983786Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8983897Z               "line": 829
2026-06-21T03:31:34.8983997Z             },
2026-06-21T03:31:34.8984101Z             {
2026-06-21T03:31:34.8984243Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.8984446Z               "line": 435
2026-06-21T03:31:34.8984556Z             },
2026-06-21T03:31:34.8984657Z             {
2026-06-21T03:31:34.8984784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.8984885Z               "line": 6574
2026-06-21T03:31:34.8984990Z             }
2026-06-21T03:31:34.8985090Z           ]
2026-06-21T03:31:34.8985190Z         },
2026-06-21T03:31:34.8985295Z         "int": {
2026-06-21T03:31:34.8985409Z           "complete": true,
2026-06-21T03:31:34.8985525Z           "evidence": [
2026-06-21T03:31:34.8985629Z             {
2026-06-21T03:31:34.8985776Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T03:31:34.8985982Z               "line": 18
2026-06-21T03:31:34.8986077Z             }
2026-06-21T03:31:34.8986179Z           ]
2026-06-21T03:31:34.8986277Z         },
2026-06-21T03:31:34.8986387Z         "unit": {
2026-06-21T03:31:34.8986503Z           "complete": true,
2026-06-21T03:31:34.8986615Z           "evidence": [
2026-06-21T03:31:34.8986725Z             {
2026-06-21T03:31:34.8986865Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8986978Z               "line": 1391
2026-06-21T03:31:34.8987077Z             },
2026-06-21T03:31:34.8987177Z             {
2026-06-21T03:31:34.8987318Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.8987428Z               "line": 1420
2026-06-21T03:31:34.8987533Z             },
2026-06-21T03:31:34.8987624Z             {
2026-06-21T03:31:34.8987772Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8987881Z               "line": 504
2026-06-21T03:31:34.8987990Z             },
2026-06-21T03:31:34.8988096Z             {
2026-06-21T03:31:34.8988230Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8988338Z               "line": 514
2026-06-21T03:31:34.8988439Z             },
2026-06-21T03:31:34.8988543Z             {
2026-06-21T03:31:34.8988682Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8988792Z               "line": 531
2026-06-21T03:31:34.8988896Z             },
2026-06-21T03:31:34.8989078Z             {
2026-06-21T03:31:34.8989225Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8989336Z               "line": 543
2026-06-21T03:31:34.8989441Z             },
2026-06-21T03:31:34.8989548Z             {
2026-06-21T03:31:34.8989687Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:31:34.8989800Z               "line": 555
2026-06-21T03:31:34.8989899Z             },
2026-06-21T03:31:34.8990000Z             {
2026-06-21T03:31:34.8990143Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.8990247Z               "line": 1145
2026-06-21T03:31:34.8990353Z             },
2026-06-21T03:31:34.8990463Z             {
2026-06-21T03:31:34.8990604Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.8990715Z               "line": 776
2026-06-21T03:31:34.8990829Z             }
2026-06-21T03:31:34.8990929Z           ]
2026-06-21T03:31:34.8991039Z         }
2026-06-21T03:31:34.8991144Z       }
2026-06-21T03:31:34.8991234Z     },
2026-06-21T03:31:34.8991340Z     {
2026-06-21T03:31:34.8991445Z       "id": "REQ-SHELL-5",
2026-06-21T03:31:34.8992689Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T03:31:34.8992811Z       "requiredStages": [
2026-06-21T03:31:34.8992912Z         "doc",
2026-06-21T03:31:34.8993017Z         "impl",
2026-06-21T03:31:34.8993121Z         "unit",
2026-06-21T03:31:34.8993223Z         "int"
2026-06-21T03:31:34.8993322Z       ],
2026-06-21T03:31:34.8993547Z       "stages": {
2026-06-21T03:31:34.8993646Z         "doc": {
2026-06-21T03:31:34.8993760Z           "complete": true,
2026-06-21T03:31:34.8993866Z           "evidence": [
2026-06-21T03:31:34.8993960Z             {
2026-06-21T03:31:34.8994089Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.8994191Z               "line": 284
2026-06-21T03:31:34.8994294Z             }
2026-06-21T03:31:34.8994394Z           ]
2026-06-21T03:31:34.8994486Z         },
2026-06-21T03:31:34.8994595Z         "impl": {
2026-06-21T03:31:34.8994708Z           "complete": true,
2026-06-21T03:31:34.8994823Z           "evidence": [
2026-06-21T03:31:34.8994921Z             {
2026-06-21T03:31:34.8995178Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:31:34.8995288Z               "line": 260
2026-06-21T03:31:34.8995392Z             }
2026-06-21T03:31:34.8995488Z           ]
2026-06-21T03:31:34.8995588Z         },
2026-06-21T03:31:34.8995697Z         "int": {
2026-06-21T03:31:34.8995813Z           "complete": true,
2026-06-21T03:31:34.8995926Z           "evidence": [
2026-06-21T03:31:34.8996036Z             {
2026-06-21T03:31:34.8996184Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8996298Z               "line": 827
2026-06-21T03:31:34.8996409Z             },
2026-06-21T03:31:34.8996542Z             {
2026-06-21T03:31:34.8996690Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.8996804Z               "line": 1290
2026-06-21T03:31:34.8996914Z             },
2026-06-21T03:31:34.8997015Z             {
2026-06-21T03:31:34.8997190Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T03:31:34.8997305Z               "line": 23
2026-06-21T03:31:34.8997411Z             }
2026-06-21T03:31:34.8997509Z           ]
2026-06-21T03:31:34.8997613Z         },
2026-06-21T03:31:34.8997714Z         "unit": {
2026-06-21T03:31:34.8997821Z           "complete": true,
2026-06-21T03:31:34.8997935Z           "evidence": [
2026-06-21T03:31:34.8998041Z             {
2026-06-21T03:31:34.8998193Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:31:34.8998302Z               "line": 803
2026-06-21T03:31:34.8998404Z             }
2026-06-21T03:31:34.8998512Z           ]
2026-06-21T03:31:34.8998617Z         }
2026-06-21T03:31:34.8998718Z       }
2026-06-21T03:31:34.8998822Z     },
2026-06-21T03:31:34.8998923Z     {
2026-06-21T03:31:34.8999123Z       "id": "REQ-START-1",
2026-06-21T03:31:34.8999347Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T03:31:34.8999466Z       "requiredStages": [
2026-06-21T03:31:34.8999567Z         "impl",
2026-06-21T03:31:34.8999677Z         "unit"
2026-06-21T03:31:34.8999780Z       ],
2026-06-21T03:31:34.8999896Z       "stages": {
2026-06-21T03:31:34.9000006Z         "doc": {
2026-06-21T03:31:34.9000113Z           "complete": false,
2026-06-21T03:31:34.9000228Z           "evidence": []
2026-06-21T03:31:34.9000328Z         },
2026-06-21T03:31:34.9000440Z         "impl": {
2026-06-21T03:31:34.9000555Z           "complete": true,
2026-06-21T03:31:34.9000660Z           "evidence": [
2026-06-21T03:31:34.9000759Z             {
2026-06-21T03:31:34.9000903Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:31:34.9001008Z               "line": 16
2026-06-21T03:31:34.9001112Z             }
2026-06-21T03:31:34.9001228Z           ]
2026-06-21T03:31:34.9001327Z         },
2026-06-21T03:31:34.9001446Z         "int": {
2026-06-21T03:31:34.9001561Z           "complete": false,
2026-06-21T03:31:34.9001670Z           "evidence": []
2026-06-21T03:31:34.9001765Z         },
2026-06-21T03:31:34.9001876Z         "unit": {
2026-06-21T03:31:34.9002000Z           "complete": true,
2026-06-21T03:31:34.9002095Z           "evidence": [
2026-06-21T03:31:34.9002205Z             {
2026-06-21T03:31:34.9002343Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:31:34.9002463Z               "line": 48
2026-06-21T03:31:34.9002568Z             },
2026-06-21T03:31:34.9002778Z             {
2026-06-21T03:31:34.9002911Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:31:34.9003014Z               "line": 63
2026-06-21T03:31:34.9003119Z             }
2026-06-21T03:31:34.9003220Z           ]
2026-06-21T03:31:34.9003323Z         }
2026-06-21T03:31:34.9003434Z       }
2026-06-21T03:31:34.9003529Z     },
2026-06-21T03:31:34.9003624Z     {
2026-06-21T03:31:34.9003739Z       "id": "REQ-START-2",
2026-06-21T03:31:34.9003902Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T03:31:34.9004015Z       "requiredStages": [
2026-06-21T03:31:34.9004126Z         "impl",
2026-06-21T03:31:34.9004330Z         "unit",
2026-06-21T03:31:34.9004441Z         "int"
2026-06-21T03:31:34.9004549Z       ],
2026-06-21T03:31:34.9004649Z       "stages": {
2026-06-21T03:31:34.9004751Z         "doc": {
2026-06-21T03:31:34.9004863Z           "complete": false,
2026-06-21T03:31:34.9004974Z           "evidence": []
2026-06-21T03:31:34.9005066Z         },
2026-06-21T03:31:34.9005174Z         "impl": {
2026-06-21T03:31:34.9005287Z           "complete": true,
2026-06-21T03:31:34.9005388Z           "evidence": [
2026-06-21T03:31:34.9005491Z             {
2026-06-21T03:31:34.9005623Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9005734Z               "line": 16
2026-06-21T03:31:34.9005834Z             },
2026-06-21T03:31:34.9005933Z             {
2026-06-21T03:31:34.9006072Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9006181Z               "line": 115
2026-06-21T03:31:34.9006286Z             },
2026-06-21T03:31:34.9006387Z             {
2026-06-21T03:31:34.9006529Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9006640Z               "line": 300
2026-06-21T03:31:34.9006744Z             }
2026-06-21T03:31:34.9006863Z           ]
2026-06-21T03:31:34.9006964Z         },
2026-06-21T03:31:34.9007068Z         "int": {
2026-06-21T03:31:34.9007183Z           "complete": true,
2026-06-21T03:31:34.9007303Z           "evidence": [
2026-06-21T03:31:34.9007407Z             {
2026-06-21T03:31:34.9007545Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.9007661Z               "line": 186
2026-06-21T03:31:34.9007764Z             }
2026-06-21T03:31:34.9007870Z           ]
2026-06-21T03:31:34.9007971Z         },
2026-06-21T03:31:34.9008084Z         "unit": {
2026-06-21T03:31:34.9008197Z           "complete": true,
2026-06-21T03:31:34.9008307Z           "evidence": [
2026-06-21T03:31:34.9008415Z             {
2026-06-21T03:31:34.9008543Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9008663Z               "line": 590
2026-06-21T03:31:34.9008758Z             },
2026-06-21T03:31:34.9008867Z             {
2026-06-21T03:31:34.9009082Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9009197Z               "line": 623
2026-06-21T03:31:34.9009307Z             }
2026-06-21T03:31:34.9009411Z           ]
2026-06-21T03:31:34.9009521Z         }
2026-06-21T03:31:34.9009621Z       }
2026-06-21T03:31:34.9009721Z     },
2026-06-21T03:31:34.9009826Z     {
2026-06-21T03:31:34.9009936Z       "id": "REQ-START-3",
2026-06-21T03:31:34.9010137Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T03:31:34.9010251Z       "requiredStages": [
2026-06-21T03:31:34.9010350Z         "impl",
2026-06-21T03:31:34.9010451Z         "unit",
2026-06-21T03:31:34.9010551Z         "int"
2026-06-21T03:31:34.9010660Z       ],
2026-06-21T03:31:34.9010759Z       "stages": {
2026-06-21T03:31:34.9010869Z         "doc": {
2026-06-21T03:31:34.9010977Z           "complete": false,
2026-06-21T03:31:34.9011100Z           "evidence": []
2026-06-21T03:31:34.9011206Z         },
2026-06-21T03:31:34.9011311Z         "impl": {
2026-06-21T03:31:34.9011429Z           "complete": true,
2026-06-21T03:31:34.9011540Z           "evidence": [
2026-06-21T03:31:34.9011644Z             {
2026-06-21T03:31:34.9011788Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9012015Z               "line": 23
2026-06-21T03:31:34.9012121Z             },
2026-06-21T03:31:34.9012221Z             {
2026-06-21T03:31:34.9012369Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9012470Z               "line": 205
2026-06-21T03:31:34.9012584Z             },
2026-06-21T03:31:34.9012689Z             {
2026-06-21T03:31:34.9012836Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9012941Z               "line": 221
2026-06-21T03:31:34.9013047Z             },
2026-06-21T03:31:34.9013156Z             {
2026-06-21T03:31:34.9013294Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9013489Z               "line": 17
2026-06-21T03:31:34.9013598Z             },
2026-06-21T03:31:34.9013703Z             {
2026-06-21T03:31:34.9013837Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9013946Z               "line": 35
2026-06-21T03:31:34.9014062Z             },
2026-06-21T03:31:34.9014161Z             {
2026-06-21T03:31:34.9014294Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9014405Z               "line": 116
2026-06-21T03:31:34.9014509Z             }
2026-06-21T03:31:34.9014604Z           ]
2026-06-21T03:31:34.9014710Z         },
2026-06-21T03:31:34.9014819Z         "int": {
2026-06-21T03:31:34.9014928Z           "complete": true,
2026-06-21T03:31:34.9015034Z           "evidence": [
2026-06-21T03:31:34.9015129Z             {
2026-06-21T03:31:34.9015268Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:31:34.9015377Z               "line": 488
2026-06-21T03:31:34.9015472Z             }
2026-06-21T03:31:34.9015582Z           ]
2026-06-21T03:31:34.9015669Z         },
2026-06-21T03:31:34.9015781Z         "unit": {
2026-06-21T03:31:34.9015890Z           "complete": true,
2026-06-21T03:31:34.9016000Z           "evidence": [
2026-06-21T03:31:34.9016103Z             {
2026-06-21T03:31:34.9016250Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9016366Z               "line": 381
2026-06-21T03:31:34.9016470Z             },
2026-06-21T03:31:34.9016570Z             {
2026-06-21T03:31:34.9016704Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9016823Z               "line": 402
2026-06-21T03:31:34.9016919Z             },
2026-06-21T03:31:34.9017033Z             {
2026-06-21T03:31:34.9017176Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:31:34.9017276Z               "line": 412
2026-06-21T03:31:34.9017385Z             },
2026-06-21T03:31:34.9017485Z             {
2026-06-21T03:31:34.9017633Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9017738Z               "line": 591
2026-06-21T03:31:34.9017844Z             },
2026-06-21T03:31:34.9017943Z             {
2026-06-21T03:31:34.9018072Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9018178Z               "line": 624
2026-06-21T03:31:34.9018282Z             },
2026-06-21T03:31:34.9018387Z             {
2026-06-21T03:31:34.9018517Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9018624Z               "line": 657
2026-06-21T03:31:34.9018724Z             }
2026-06-21T03:31:34.9018829Z           ]
2026-06-21T03:31:34.9018932Z         }
2026-06-21T03:31:34.9019127Z       }
2026-06-21T03:31:34.9019228Z     },
2026-06-21T03:31:34.9019337Z     {
2026-06-21T03:31:34.9019442Z       "id": "REQ-START-4",
2026-06-21T03:31:34.9019609Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T03:31:34.9019713Z       "requiredStages": [
2026-06-21T03:31:34.9019819Z         "impl",
2026-06-21T03:31:34.9019924Z         "unit"
2026-06-21T03:31:34.9020028Z       ],
2026-06-21T03:31:34.9020130Z       "stages": {
2026-06-21T03:31:34.9020229Z         "doc": {
2026-06-21T03:31:34.9020343Z           "complete": false,
2026-06-21T03:31:34.9020449Z           "evidence": []
2026-06-21T03:31:34.9020553Z         },
2026-06-21T03:31:34.9020755Z         "impl": {
2026-06-21T03:31:34.9020867Z           "complete": true,
2026-06-21T03:31:34.9020982Z           "evidence": [
2026-06-21T03:31:34.9021079Z             {
2026-06-21T03:31:34.9021229Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9021338Z               "line": 585
2026-06-21T03:31:34.9021448Z             }
2026-06-21T03:31:34.9021551Z           ]
2026-06-21T03:31:34.9021651Z         },
2026-06-21T03:31:34.9021757Z         "int": {
2026-06-21T03:31:34.9021866Z           "complete": false,
2026-06-21T03:31:34.9021975Z           "evidence": []
2026-06-21T03:31:34.9022076Z         },
2026-06-21T03:31:34.9022280Z         "unit": {
2026-06-21T03:31:34.9022390Z           "complete": true,
2026-06-21T03:31:34.9022491Z           "evidence": [
2026-06-21T03:31:34.9022595Z             {
2026-06-21T03:31:34.9022743Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9022872Z               "line": 1026
2026-06-21T03:31:34.9022978Z             }
2026-06-21T03:31:34.9023082Z           ]
2026-06-21T03:31:34.9023177Z         }
2026-06-21T03:31:34.9023288Z       }
2026-06-21T03:31:34.9023391Z     },
2026-06-21T03:31:34.9023496Z     {
2026-06-21T03:31:34.9023617Z       "id": "REQ-START-5",
2026-06-21T03:31:34.9026460Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T03:31:34.9026612Z       "requiredStages": [
2026-06-21T03:31:34.9026720Z         "doc",
2026-06-21T03:31:34.9026830Z         "impl",
2026-06-21T03:31:34.9026927Z         "unit",
2026-06-21T03:31:34.9027034Z         "int"
2026-06-21T03:31:34.9027140Z       ],
2026-06-21T03:31:34.9027245Z       "stages": {
2026-06-21T03:31:34.9027344Z         "doc": {
2026-06-21T03:31:34.9027460Z           "complete": true,
2026-06-21T03:31:34.9027574Z           "evidence": [
2026-06-21T03:31:34.9027673Z             {
2026-06-21T03:31:34.9027794Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.9027908Z               "line": 176
2026-06-21T03:31:34.9028017Z             },
2026-06-21T03:31:34.9028118Z             {
2026-06-21T03:31:34.9028284Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T03:31:34.9028395Z               "line": 28
2026-06-21T03:31:34.9028499Z             }
2026-06-21T03:31:34.9028608Z           ]
2026-06-21T03:31:34.9028715Z         },
2026-06-21T03:31:34.9028819Z         "impl": {
2026-06-21T03:31:34.9028928Z           "complete": true,
2026-06-21T03:31:34.9029129Z           "evidence": [
2026-06-21T03:31:34.9029232Z             {
2026-06-21T03:31:34.9029389Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.9029507Z               "line": 26
2026-06-21T03:31:34.9029606Z             },
2026-06-21T03:31:34.9029711Z             {
2026-06-21T03:31:34.9029859Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.9029978Z               "line": 212
2026-06-21T03:31:34.9030084Z             },
2026-06-21T03:31:34.9030188Z             {
2026-06-21T03:31:34.9030332Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.9030441Z               "line": 221
2026-06-21T03:31:34.9030651Z             },
2026-06-21T03:31:34.9030755Z             {
2026-06-21T03:31:34.9030899Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.9031005Z               "line": 485
2026-06-21T03:31:34.9031117Z             },
2026-06-21T03:31:34.9031227Z             {
2026-06-21T03:31:34.9031357Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9031475Z               "line": 36
2026-06-21T03:31:34.9031577Z             },
2026-06-21T03:31:34.9031681Z             {
2026-06-21T03:31:34.9031818Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9034804Z               "line": 118
2026-06-21T03:31:34.9035081Z             },
2026-06-21T03:31:34.9035182Z             {
2026-06-21T03:31:34.9035333Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:31:34.9035449Z               "line": 329
2026-06-21T03:31:34.9035558Z             }
2026-06-21T03:31:34.9035658Z           ]
2026-06-21T03:31:34.9035763Z         },
2026-06-21T03:31:34.9035878Z         "int": {
2026-06-21T03:31:34.9035987Z           "complete": true,
2026-06-21T03:31:34.9036088Z           "evidence": [
2026-06-21T03:31:34.9036197Z             {
2026-06-21T03:31:34.9036354Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:31:34.9036464Z               "line": 17
2026-06-21T03:31:34.9036568Z             }
2026-06-21T03:31:34.9036674Z           ]
2026-06-21T03:31:34.9036765Z         },
2026-06-21T03:31:34.9036869Z         "unit": {
2026-06-21T03:31:34.9036982Z           "complete": true,
2026-06-21T03:31:34.9037092Z           "evidence": [
2026-06-21T03:31:34.9037195Z             {
2026-06-21T03:31:34.9037357Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.9037457Z               "line": 358
2026-06-21T03:31:34.9037557Z             },
2026-06-21T03:31:34.9037661Z             {
2026-06-21T03:31:34.9037810Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:31:34.9037919Z               "line": 371
2026-06-21T03:31:34.9038025Z             },
2026-06-21T03:31:34.9038129Z             {
2026-06-21T03:31:34.9038267Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:31:34.9038373Z               "line": 597
2026-06-21T03:31:34.9038473Z             }
2026-06-21T03:31:34.9038572Z           ]
2026-06-21T03:31:34.9038673Z         }
2026-06-21T03:31:34.9038773Z       }
2026-06-21T03:31:34.9038877Z     },
2026-06-21T03:31:34.9039073Z     {
2026-06-21T03:31:34.9039187Z       "id": "REQ-STORE-1",
2026-06-21T03:31:34.9040128Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T03:31:34.9040248Z       "requiredStages": [
2026-06-21T03:31:34.9040358Z         "impl",
2026-06-21T03:31:34.9040457Z         "unit"
2026-06-21T03:31:34.9040558Z       ],
2026-06-21T03:31:34.9040662Z       "stages": {
2026-06-21T03:31:34.9040767Z         "doc": {
2026-06-21T03:31:34.9040882Z           "complete": false,
2026-06-21T03:31:34.9040991Z           "evidence": []
2026-06-21T03:31:34.9041096Z         },
2026-06-21T03:31:34.9041202Z         "impl": {
2026-06-21T03:31:34.9041306Z           "complete": true,
2026-06-21T03:31:34.9041415Z           "evidence": [
2026-06-21T03:31:34.9041517Z             {
2026-06-21T03:31:34.9041677Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9041783Z               "line": 23
2026-06-21T03:31:34.9041889Z             },
2026-06-21T03:31:34.9041997Z             {
2026-06-21T03:31:34.9042137Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9042242Z               "line": 46
2026-06-21T03:31:34.9042345Z             },
2026-06-21T03:31:34.9042444Z             {
2026-06-21T03:31:34.9042596Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9042800Z               "line": 97
2026-06-21T03:31:34.9042896Z             },
2026-06-21T03:31:34.9042991Z             {
2026-06-21T03:31:34.9043139Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9043249Z               "line": 125
2026-06-21T03:31:34.9043348Z             },
2026-06-21T03:31:34.9043444Z             {
2026-06-21T03:31:34.9043587Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9043691Z               "line": 207
2026-06-21T03:31:34.9043793Z             },
2026-06-21T03:31:34.9043901Z             {
2026-06-21T03:31:34.9044035Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9044254Z               "line": 231
2026-06-21T03:31:34.9044369Z             },
2026-06-21T03:31:34.9044470Z             {
2026-06-21T03:31:34.9044621Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9044727Z               "line": 467
2026-06-21T03:31:34.9044836Z             },
2026-06-21T03:31:34.9044931Z             {
2026-06-21T03:31:34.9045086Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9045197Z               "line": 25
2026-06-21T03:31:34.9045302Z             },
2026-06-21T03:31:34.9045403Z             {
2026-06-21T03:31:34.9045550Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9045660Z               "line": 120
2026-06-21T03:31:34.9045761Z             },
2026-06-21T03:31:34.9045869Z             {
2026-06-21T03:31:34.9046019Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9046123Z               "line": 148
2026-06-21T03:31:34.9046241Z             },
2026-06-21T03:31:34.9046348Z             {
2026-06-21T03:31:34.9046495Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9046604Z               "line": 165
2026-06-21T03:31:34.9046709Z             },
2026-06-21T03:31:34.9046819Z             {
2026-06-21T03:31:34.9046958Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9047072Z               "line": 180
2026-06-21T03:31:34.9047171Z             },
2026-06-21T03:31:34.9047277Z             {
2026-06-21T03:31:34.9047419Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9047523Z               "line": 198
2026-06-21T03:31:34.9047629Z             },
2026-06-21T03:31:34.9047732Z             {
2026-06-21T03:31:34.9047873Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9047974Z               "line": 207
2026-06-21T03:31:34.9048079Z             },
2026-06-21T03:31:34.9048178Z             {
2026-06-21T03:31:34.9048328Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:31:34.9048441Z               "line": 16
2026-06-21T03:31:34.9048541Z             },
2026-06-21T03:31:34.9048647Z             {
2026-06-21T03:31:34.9048784Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:31:34.9048895Z               "line": 63
2026-06-21T03:31:34.9049090Z             }
2026-06-21T03:31:34.9049190Z           ]
2026-06-21T03:31:34.9049295Z         },
2026-06-21T03:31:34.9049400Z         "int": {
2026-06-21T03:31:34.9049520Z           "complete": false,
2026-06-21T03:31:34.9049633Z           "evidence": []
2026-06-21T03:31:34.9049738Z         },
2026-06-21T03:31:34.9049830Z         "unit": {
2026-06-21T03:31:34.9049939Z           "complete": true,
2026-06-21T03:31:34.9050049Z           "evidence": [
2026-06-21T03:31:34.9050149Z             {
2026-06-21T03:31:34.9050305Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9050409Z               "line": 584
2026-06-21T03:31:34.9050514Z             },
2026-06-21T03:31:34.9050618Z             {
2026-06-21T03:31:34.9050769Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9050875Z               "line": 594
2026-06-21T03:31:34.9050975Z             },
2026-06-21T03:31:34.9051079Z             {
2026-06-21T03:31:34.9051218Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9051433Z               "line": 616
2026-06-21T03:31:34.9051538Z             },
2026-06-21T03:31:34.9051637Z             {
2026-06-21T03:31:34.9051786Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9051885Z               "line": 632
2026-06-21T03:31:34.9051990Z             },
2026-06-21T03:31:34.9052082Z             {
2026-06-21T03:31:34.9052228Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:31:34.9052338Z               "line": 690
2026-06-21T03:31:34.9052439Z             },
2026-06-21T03:31:34.9052547Z             {
2026-06-21T03:31:34.9052788Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9052900Z               "line": 472
2026-06-21T03:31:34.9052994Z             },
2026-06-21T03:31:34.9053100Z             {
2026-06-21T03:31:34.9053246Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:31:34.9053351Z               "line": 507
2026-06-21T03:31:34.9053466Z             },
2026-06-21T03:31:34.9053569Z             {
2026-06-21T03:31:34.9053714Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:31:34.9053809Z               "line": 120
2026-06-21T03:31:34.9053913Z             },
2026-06-21T03:31:34.9054019Z             {
2026-06-21T03:31:34.9054157Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:31:34.9054266Z               "line": 128
2026-06-21T03:31:34.9054367Z             }
2026-06-21T03:31:34.9054471Z           ]
2026-06-21T03:31:34.9054571Z         }
2026-06-21T03:31:34.9054682Z       }
2026-06-21T03:31:34.9054786Z     },
2026-06-21T03:31:34.9054891Z     {
2026-06-21T03:31:34.9055006Z       "id": "REQ-SUBNET-1",
2026-06-21T03:31:34.9055350Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T03:31:34.9055472Z       "requiredStages": [
2026-06-21T03:31:34.9055579Z         "impl",
2026-06-21T03:31:34.9055688Z         "unit"
2026-06-21T03:31:34.9055791Z       ],
2026-06-21T03:31:34.9055886Z       "stages": {
2026-06-21T03:31:34.9055982Z         "doc": {
2026-06-21T03:31:34.9056096Z           "complete": false,
2026-06-21T03:31:34.9056210Z           "evidence": []
2026-06-21T03:31:34.9056316Z         },
2026-06-21T03:31:34.9056420Z         "impl": {
2026-06-21T03:31:34.9056535Z           "complete": true,
2026-06-21T03:31:34.9056640Z           "evidence": [
2026-06-21T03:31:34.9056744Z             {
2026-06-21T03:31:34.9056888Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9056993Z               "line": 281
2026-06-21T03:31:34.9057102Z             },
2026-06-21T03:31:34.9057203Z             {
2026-06-21T03:31:34.9057355Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9057455Z               "line": 651
2026-06-21T03:31:34.9057557Z             },
2026-06-21T03:31:34.9057646Z             {
2026-06-21T03:31:34.9057774Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9057886Z               "line": 3399
2026-06-21T03:31:34.9057989Z             },
2026-06-21T03:31:34.9058083Z             {
2026-06-21T03:31:34.9058203Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9058315Z               "line": 3709
2026-06-21T03:31:34.9058419Z             },
2026-06-21T03:31:34.9058525Z             {
2026-06-21T03:31:34.9058658Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9058763Z               "line": 3728
2026-06-21T03:31:34.9058869Z             },
2026-06-21T03:31:34.9059048Z             {
2026-06-21T03:31:34.9059169Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9059273Z               "line": 3792
2026-06-21T03:31:34.9059382Z             },
2026-06-21T03:31:34.9059484Z             {
2026-06-21T03:31:34.9059607Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9059721Z               "line": 3834
2026-06-21T03:31:34.9059808Z             },
2026-06-21T03:31:34.9060016Z             {
2026-06-21T03:31:34.9060142Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9060255Z               "line": 4023
2026-06-21T03:31:34.9060356Z             },
2026-06-21T03:31:34.9060452Z             {
2026-06-21T03:31:34.9060579Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9060686Z               "line": 4093
2026-06-21T03:31:34.9060791Z             },
2026-06-21T03:31:34.9060894Z             {
2026-06-21T03:31:34.9061022Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9061136Z               "line": 4317
2026-06-21T03:31:34.9061234Z             },
2026-06-21T03:31:34.9061440Z             {
2026-06-21T03:31:34.9061563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9061673Z               "line": 4961
2026-06-21T03:31:34.9061774Z             },
2026-06-21T03:31:34.9061883Z             {
2026-06-21T03:31:34.9062022Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.9062126Z               "line": 418
2026-06-21T03:31:34.9062230Z             }
2026-06-21T03:31:34.9062332Z           ]
2026-06-21T03:31:34.9062436Z         },
2026-06-21T03:31:34.9062536Z         "int": {
2026-06-21T03:31:34.9062656Z           "complete": false,
2026-06-21T03:31:34.9062765Z           "evidence": []
2026-06-21T03:31:34.9062869Z         },
2026-06-21T03:31:34.9062971Z         "unit": {
2026-06-21T03:31:34.9063085Z           "complete": true,
2026-06-21T03:31:34.9063189Z           "evidence": [
2026-06-21T03:31:34.9063291Z             {
2026-06-21T03:31:34.9063437Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9063541Z               "line": 1584
2026-06-21T03:31:34.9063651Z             },
2026-06-21T03:31:34.9063759Z             {
2026-06-21T03:31:34.9063886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9063993Z               "line": 9964
2026-06-21T03:31:34.9064092Z             },
2026-06-21T03:31:34.9064201Z             {
2026-06-21T03:31:34.9064331Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9064440Z               "line": 10134
2026-06-21T03:31:34.9064535Z             },
2026-06-21T03:31:34.9064631Z             {
2026-06-21T03:31:34.9064755Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9064860Z               "line": 10141
2026-06-21T03:31:34.9064970Z             },
2026-06-21T03:31:34.9065074Z             {
2026-06-21T03:31:34.9065199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9065313Z               "line": 10194
2026-06-21T03:31:34.9065408Z             },
2026-06-21T03:31:34.9065504Z             {
2026-06-21T03:31:34.9065628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9065741Z               "line": 10211
2026-06-21T03:31:34.9065834Z             },
2026-06-21T03:31:34.9065933Z             {
2026-06-21T03:31:34.9066061Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9066172Z               "line": 10241
2026-06-21T03:31:34.9066271Z             },
2026-06-21T03:31:34.9066361Z             {
2026-06-21T03:31:34.9066489Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9066600Z               "line": 10357
2026-06-21T03:31:34.9066704Z             },
2026-06-21T03:31:34.9066804Z             {
2026-06-21T03:31:34.9066924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9067033Z               "line": 10508
2026-06-21T03:31:34.9067139Z             }
2026-06-21T03:31:34.9067243Z           ]
2026-06-21T03:31:34.9067342Z         }
2026-06-21T03:31:34.9067439Z       }
2026-06-21T03:31:34.9067543Z     },
2026-06-21T03:31:34.9067638Z     {
2026-06-21T03:31:34.9067754Z       "id": "REQ-SUBNET-2",
2026-06-21T03:31:34.9068020Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T03:31:34.9068140Z       "requiredStages": [
2026-06-21T03:31:34.9068248Z         "impl",
2026-06-21T03:31:34.9068354Z         "unit",
2026-06-21T03:31:34.9068455Z         "int"
2026-06-21T03:31:34.9068629Z       ],
2026-06-21T03:31:34.9068729Z       "stages": {
2026-06-21T03:31:34.9068833Z         "doc": {
2026-06-21T03:31:34.9069032Z           "complete": true,
2026-06-21T03:31:34.9069148Z           "evidence": [
2026-06-21T03:31:34.9069251Z             {
2026-06-21T03:31:34.9069438Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T03:31:34.9069547Z               "line": 60
2026-06-21T03:31:34.9069652Z             }
2026-06-21T03:31:34.9069758Z           ]
2026-06-21T03:31:34.9069857Z         },
2026-06-21T03:31:34.9069967Z         "impl": {
2026-06-21T03:31:34.9070077Z           "complete": true,
2026-06-21T03:31:34.9070310Z           "evidence": [
2026-06-21T03:31:34.9070410Z             {
2026-06-21T03:31:34.9070553Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.9070660Z               "line": 886
2026-06-21T03:31:34.9070763Z             },
2026-06-21T03:31:34.9070868Z             {
2026-06-21T03:31:34.9071012Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.9071120Z               "line": 1948
2026-06-21T03:31:34.9071216Z             },
2026-06-21T03:31:34.9071322Z             {
2026-06-21T03:31:34.9071468Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.9071577Z               "line": 633
2026-06-21T03:31:34.9071682Z             },
2026-06-21T03:31:34.9071776Z             {
2026-06-21T03:31:34.9071923Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:31:34.9072024Z               "line": 817
2026-06-21T03:31:34.9072133Z             },
2026-06-21T03:31:34.9072238Z             {
2026-06-21T03:31:34.9072382Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9072495Z               "line": 26
2026-06-21T03:31:34.9072596Z             },
2026-06-21T03:31:34.9072701Z             {
2026-06-21T03:31:34.9072839Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9072935Z               "line": 60
2026-06-21T03:31:34.9073044Z             },
2026-06-21T03:31:34.9073149Z             {
2026-06-21T03:31:34.9073292Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9073397Z               "line": 168
2026-06-21T03:31:34.9073507Z             },
2026-06-21T03:31:34.9073612Z             {
2026-06-21T03:31:34.9073759Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9073865Z               "line": 295
2026-06-21T03:31:34.9073969Z             },
2026-06-21T03:31:34.9074077Z             {
2026-06-21T03:31:34.9074215Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9074323Z               "line": 417
2026-06-21T03:31:34.9074432Z             },
2026-06-21T03:31:34.9074538Z             {
2026-06-21T03:31:34.9074699Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:31:34.9074810Z               "line": 252
2026-06-21T03:31:34.9074914Z             },
2026-06-21T03:31:34.9075019Z             {
2026-06-21T03:31:34.9075153Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9075268Z               "line": 3755
2026-06-21T03:31:34.9075362Z             },
2026-06-21T03:31:34.9075468Z             {
2026-06-21T03:31:34.9075591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9075701Z               "line": 4256
2026-06-21T03:31:34.9075807Z             },
2026-06-21T03:31:34.9075911Z             {
2026-06-21T03:31:34.9076040Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9076141Z               "line": 4892
2026-06-21T03:31:34.9076249Z             }
2026-06-21T03:31:34.9076350Z           ]
2026-06-21T03:31:34.9076456Z         },
2026-06-21T03:31:34.9076563Z         "int": {
2026-06-21T03:31:34.9076679Z           "complete": true,
2026-06-21T03:31:34.9076785Z           "evidence": [
2026-06-21T03:31:34.9076888Z             {
2026-06-21T03:31:34.9077045Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T03:31:34.9077151Z               "line": 22
2026-06-21T03:31:34.9077374Z             },
2026-06-21T03:31:34.9077474Z             {
2026-06-21T03:31:34.9077626Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.9077732Z               "line": 645
2026-06-21T03:31:34.9077837Z             },
2026-06-21T03:31:34.9077946Z             {
2026-06-21T03:31:34.9078094Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.9078194Z               "line": 887
2026-06-21T03:31:34.9078284Z             }
2026-06-21T03:31:34.9078390Z           ]
2026-06-21T03:31:34.9078495Z         },
2026-06-21T03:31:34.9078594Z         "unit": {
2026-06-21T03:31:34.9078710Z           "complete": true,
2026-06-21T03:31:34.9078905Z           "evidence": [
2026-06-21T03:31:34.9079076Z             {
2026-06-21T03:31:34.9079213Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9079328Z               "line": 586
2026-06-21T03:31:34.9079435Z             },
2026-06-21T03:31:34.9079535Z             {
2026-06-21T03:31:34.9079664Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9079773Z               "line": 10004
2026-06-21T03:31:34.9079878Z             },
2026-06-21T03:31:34.9079979Z             {
2026-06-21T03:31:34.9080112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9080227Z               "line": 10715
2026-06-21T03:31:34.9080327Z             }
2026-06-21T03:31:34.9080426Z           ]
2026-06-21T03:31:34.9080527Z         }
2026-06-21T03:31:34.9080628Z       }
2026-06-21T03:31:34.9080732Z     },
2026-06-21T03:31:34.9080832Z     {
2026-06-21T03:31:34.9080943Z       "id": "REQ-SUBNET-3",
2026-06-21T03:31:34.9081239Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T03:31:34.9081366Z       "requiredStages": [
2026-06-21T03:31:34.9081471Z         "impl",
2026-06-21T03:31:34.9081577Z         "unit"
2026-06-21T03:31:34.9081671Z       ],
2026-06-21T03:31:34.9081776Z       "stages": {
2026-06-21T03:31:34.9081892Z         "doc": {
2026-06-21T03:31:34.9082005Z           "complete": false,
2026-06-21T03:31:34.9082118Z           "evidence": []
2026-06-21T03:31:34.9082219Z         },
2026-06-21T03:31:34.9082331Z         "impl": {
2026-06-21T03:31:34.9082440Z           "complete": true,
2026-06-21T03:31:34.9082556Z           "evidence": [
2026-06-21T03:31:34.9082655Z             {
2026-06-21T03:31:34.9082808Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9082918Z               "line": 152
2026-06-21T03:31:34.9083017Z             },
2026-06-21T03:31:34.9083128Z             {
2026-06-21T03:31:34.9083271Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9083379Z               "line": 299
2026-06-21T03:31:34.9083486Z             },
2026-06-21T03:31:34.9083585Z             {
2026-06-21T03:31:34.9083738Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9083838Z               "line": 443
2026-06-21T03:31:34.9083947Z             },
2026-06-21T03:31:34.9084058Z             {
2026-06-21T03:31:34.9084209Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9084319Z               "line": 532
2026-06-21T03:31:34.9084421Z             },
2026-06-21T03:31:34.9084529Z             {
2026-06-21T03:31:34.9084671Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9084775Z               "line": 125
2026-06-21T03:31:34.9084879Z             },
2026-06-21T03:31:34.9084978Z             {
2026-06-21T03:31:34.9085123Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9085232Z               "line": 253
2026-06-21T03:31:34.9085336Z             },
2026-06-21T03:31:34.9085437Z             {
2026-06-21T03:31:34.9085584Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9085690Z               "line": 264
2026-06-21T03:31:34.9085799Z             },
2026-06-21T03:31:34.9085908Z             {
2026-06-21T03:31:34.9086042Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9086261Z               "line": 285
2026-06-21T03:31:34.9086357Z             },
2026-06-21T03:31:34.9086466Z             {
2026-06-21T03:31:34.9086614Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9086720Z               "line": 621
2026-06-21T03:31:34.9086819Z             },
2026-06-21T03:31:34.9086915Z             {
2026-06-21T03:31:34.9087063Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9087172Z               "line": 680
2026-06-21T03:31:34.9087278Z             },
2026-06-21T03:31:34.9087378Z             {
2026-06-21T03:31:34.9087528Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.9087739Z               "line": 61
2026-06-21T03:31:34.9087843Z             },
2026-06-21T03:31:34.9087948Z             {
2026-06-21T03:31:34.9088096Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.9088201Z               "line": 90
2026-06-21T03:31:34.9088307Z             },
2026-06-21T03:31:34.9088407Z             {
2026-06-21T03:31:34.9088554Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.9088664Z               "line": 125
2026-06-21T03:31:34.9088763Z             },
2026-06-21T03:31:34.9088864Z             {
2026-06-21T03:31:34.9089092Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T03:31:34.9089208Z               "line": 9
2026-06-21T03:31:34.9089312Z             },
2026-06-21T03:31:34.9089417Z             {
2026-06-21T03:31:34.9089547Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9089655Z               "line": 4093
2026-06-21T03:31:34.9089755Z             },
2026-06-21T03:31:34.9089854Z             {
2026-06-21T03:31:34.9089986Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.9090090Z               "line": 445
2026-06-21T03:31:34.9090186Z             }
2026-06-21T03:31:34.9090278Z           ]
2026-06-21T03:31:34.9090381Z         },
2026-06-21T03:31:34.9090491Z         "int": {
2026-06-21T03:31:34.9090596Z           "complete": false,
2026-06-21T03:31:34.9090715Z           "evidence": []
2026-06-21T03:31:34.9090816Z         },
2026-06-21T03:31:34.9090925Z         "unit": {
2026-06-21T03:31:34.9091039Z           "complete": true,
2026-06-21T03:31:34.9091145Z           "evidence": [
2026-06-21T03:31:34.9091249Z             {
2026-06-21T03:31:34.9091401Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9091517Z               "line": 1356
2026-06-21T03:31:34.9091617Z             },
2026-06-21T03:31:34.9091721Z             {
2026-06-21T03:31:34.9091874Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9091993Z               "line": 1713
2026-06-21T03:31:34.9092094Z             },
2026-06-21T03:31:34.9092207Z             {
2026-06-21T03:31:34.9092361Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.9092471Z               "line": 892
2026-06-21T03:31:34.9092574Z             },
2026-06-21T03:31:34.9092673Z             {
2026-06-21T03:31:34.9092816Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9092924Z               "line": 991
2026-06-21T03:31:34.9093039Z             },
2026-06-21T03:31:34.9093149Z             {
2026-06-21T03:31:34.9093286Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9093398Z               "line": 1041
2026-06-21T03:31:34.9093502Z             },
2026-06-21T03:31:34.9093611Z             {
2026-06-21T03:31:34.9093759Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9093859Z               "line": 1100
2026-06-21T03:31:34.9093969Z             },
2026-06-21T03:31:34.9094074Z             {
2026-06-21T03:31:34.9094226Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:31:34.9094337Z               "line": 234
2026-06-21T03:31:34.9094436Z             },
2026-06-21T03:31:34.9094536Z             {
2026-06-21T03:31:34.9094774Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T03:31:34.9094894Z               "line": 49
2026-06-21T03:31:34.9094995Z             },
2026-06-21T03:31:34.9095098Z             {
2026-06-21T03:31:34.9095231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9095341Z               "line": 10357
2026-06-21T03:31:34.9095439Z             },
2026-06-21T03:31:34.9095538Z             {
2026-06-21T03:31:34.9095663Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9095772Z               "line": 10463
2026-06-21T03:31:34.9095877Z             },
2026-06-21T03:31:34.9095978Z             {
2026-06-21T03:31:34.9096106Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9096316Z               "line": 10681
2026-06-21T03:31:34.9096421Z             }
2026-06-21T03:31:34.9096531Z           ]
2026-06-21T03:31:34.9096636Z         }
2026-06-21T03:31:34.9096741Z       }
2026-06-21T03:31:34.9096836Z     },
2026-06-21T03:31:34.9096932Z     {
2026-06-21T03:31:34.9097055Z       "id": "REQ-SUBNET-4",
2026-06-21T03:31:34.9097365Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T03:31:34.9097485Z       "requiredStages": [
2026-06-21T03:31:34.9097590Z         "impl",
2026-06-21T03:31:34.9097698Z         "unit"
2026-06-21T03:31:34.9097805Z       ],
2026-06-21T03:31:34.9097900Z       "stages": {
2026-06-21T03:31:34.9098008Z         "doc": {
2026-06-21T03:31:34.9098112Z           "complete": true,
2026-06-21T03:31:34.9098218Z           "evidence": [
2026-06-21T03:31:34.9098323Z             {
2026-06-21T03:31:34.9098513Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T03:31:34.9098624Z               "line": 60
2026-06-21T03:31:34.9098732Z             }
2026-06-21T03:31:34.9098833Z           ]
2026-06-21T03:31:34.9098933Z         },
2026-06-21T03:31:34.9099124Z         "impl": {
2026-06-21T03:31:34.9099234Z           "complete": true,
2026-06-21T03:31:34.9099356Z           "evidence": [
2026-06-21T03:31:34.9099454Z             {
2026-06-21T03:31:34.9099581Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9099695Z               "line": 3399
2026-06-21T03:31:34.9099792Z             },
2026-06-21T03:31:34.9099901Z             {
2026-06-21T03:31:34.9100025Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9100131Z               "line": 4859
2026-06-21T03:31:34.9100239Z             },
2026-06-21T03:31:34.9100338Z             {
2026-06-21T03:31:34.9100472Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9100579Z               "line": 4892
2026-06-21T03:31:34.9100679Z             }
2026-06-21T03:31:34.9100785Z           ]
2026-06-21T03:31:34.9100885Z         },
2026-06-21T03:31:34.9100984Z         "int": {
2026-06-21T03:31:34.9101100Z           "complete": false,
2026-06-21T03:31:34.9101214Z           "evidence": []
2026-06-21T03:31:34.9101318Z         },
2026-06-21T03:31:34.9101419Z         "unit": {
2026-06-21T03:31:34.9101528Z           "complete": true,
2026-06-21T03:31:34.9101633Z           "evidence": [
2026-06-21T03:31:34.9101739Z             {
2026-06-21T03:31:34.9101867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9101981Z               "line": 10120
2026-06-21T03:31:34.9102087Z             },
2026-06-21T03:31:34.9102191Z             {
2026-06-21T03:31:34.9102311Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9102425Z               "line": 10194
2026-06-21T03:31:34.9102534Z             }
2026-06-21T03:31:34.9102645Z           ]
2026-06-21T03:31:34.9102745Z         }
2026-06-21T03:31:34.9102844Z       }
2026-06-21T03:31:34.9102960Z     },
2026-06-21T03:31:34.9103059Z     {
2026-06-21T03:31:34.9103177Z       "id": "REQ-SUBNET-5",
2026-06-21T03:31:34.9104362Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T03:31:34.9104606Z       "requiredStages": [
2026-06-21T03:31:34.9104710Z         "impl",
2026-06-21T03:31:34.9104815Z         "unit",
2026-06-21T03:31:34.9104921Z         "int"
2026-06-21T03:31:34.9105024Z       ],
2026-06-21T03:31:34.9105130Z       "stages": {
2026-06-21T03:31:34.9105236Z         "doc": {
2026-06-21T03:31:34.9105348Z           "complete": false,
2026-06-21T03:31:34.9105449Z           "evidence": []
2026-06-21T03:31:34.9105551Z         },
2026-06-21T03:31:34.9105658Z         "impl": {
2026-06-21T03:31:34.9105882Z           "complete": true,
2026-06-21T03:31:34.9105989Z           "evidence": [
2026-06-21T03:31:34.9106103Z             {
2026-06-21T03:31:34.9106252Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:31:34.9106361Z               "line": 128
2026-06-21T03:31:34.9106466Z             },
2026-06-21T03:31:34.9106562Z             {
2026-06-21T03:31:34.9106709Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:31:34.9106825Z               "line": 413
2026-06-21T03:31:34.9106934Z             },
2026-06-21T03:31:34.9107024Z             {
2026-06-21T03:31:34.9107168Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9107272Z               "line": 74
2026-06-21T03:31:34.9107372Z             },
2026-06-21T03:31:34.9107474Z             {
2026-06-21T03:31:34.9107620Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.9107730Z               "line": 332
2026-06-21T03:31:34.9107835Z             },
2026-06-21T03:31:34.9107944Z             {
2026-06-21T03:31:34.9108079Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.9108187Z               "line": 621
2026-06-21T03:31:34.9108288Z             },
2026-06-21T03:31:34.9108398Z             {
2026-06-21T03:31:34.9108554Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.9108663Z               "line": 31
2026-06-21T03:31:34.9108768Z             },
2026-06-21T03:31:34.9108864Z             {
2026-06-21T03:31:34.9109103Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.9109207Z               "line": 50
2026-06-21T03:31:34.9109311Z             },
2026-06-21T03:31:34.9109417Z             {
2026-06-21T03:31:34.9109569Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.9109674Z               "line": 69
2026-06-21T03:31:34.9109779Z             },
2026-06-21T03:31:34.9109884Z             {
2026-06-21T03:31:34.9110033Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.9110146Z               "line": 113
2026-06-21T03:31:34.9110246Z             },
2026-06-21T03:31:34.9110348Z             {
2026-06-21T03:31:34.9110493Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:31:34.9110595Z               "line": 25
2026-06-21T03:31:34.9110705Z             },
2026-06-21T03:31:34.9110813Z             {
2026-06-21T03:31:34.9110965Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:31:34.9111074Z               "line": 34
2026-06-21T03:31:34.9111177Z             },
2026-06-21T03:31:34.9111278Z             {
2026-06-21T03:31:34.9111422Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:31:34.9111535Z               "line": 17
2026-06-21T03:31:34.9111626Z             },
2026-06-21T03:31:34.9111726Z             {
2026-06-21T03:31:34.9111854Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9111955Z               "line": 4817
2026-06-21T03:31:34.9112055Z             },
2026-06-21T03:31:34.9112159Z             {
2026-06-21T03:31:34.9112299Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:31:34.9112408Z               "line": 419
2026-06-21T03:31:34.9112503Z             }
2026-06-21T03:31:34.9115294Z           ]
2026-06-21T03:31:34.9115428Z         },
2026-06-21T03:31:34.9115709Z         "int": {
2026-06-21T03:31:34.9115810Z           "complete": true,
2026-06-21T03:31:34.9115918Z           "evidence": [
2026-06-21T03:31:34.9116028Z             {
2026-06-21T03:31:34.9116191Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.9116304Z               "line": 821
2026-06-21T03:31:34.9116408Z             }
2026-06-21T03:31:34.9116513Z           ]
2026-06-21T03:31:34.9116611Z         },
2026-06-21T03:31:34.9116726Z         "unit": {
2026-06-21T03:31:34.9116846Z           "complete": true,
2026-06-21T03:31:34.9116959Z           "evidence": [
2026-06-21T03:31:34.9117060Z             {
2026-06-21T03:31:34.9117307Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.9117418Z               "line": 341
2026-06-21T03:31:34.9117522Z             },
2026-06-21T03:31:34.9117626Z             {
2026-06-21T03:31:34.9117780Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:31:34.9117889Z               "line": 1115
2026-06-21T03:31:34.9118004Z             },
2026-06-21T03:31:34.9118104Z             {
2026-06-21T03:31:34.9118252Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:31:34.9118358Z               "line": 151
2026-06-21T03:31:34.9118461Z             },
2026-06-21T03:31:34.9118567Z             {
2026-06-21T03:31:34.9118720Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:31:34.9118828Z               "line": 61
2026-06-21T03:31:34.9118935Z             },
2026-06-21T03:31:34.9119133Z             {
2026-06-21T03:31:34.9119275Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:31:34.9119382Z               "line": 111
2026-06-21T03:31:34.9119485Z             },
2026-06-21T03:31:34.9119590Z             {
2026-06-21T03:31:34.9119739Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:31:34.9119847Z               "line": 138
2026-06-21T03:31:34.9119949Z             },
2026-06-21T03:31:34.9120049Z             {
2026-06-21T03:31:34.9120201Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:31:34.9120297Z               "line": 148
2026-06-21T03:31:34.9120401Z             },
2026-06-21T03:31:34.9120505Z             {
2026-06-21T03:31:34.9120630Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9120740Z               "line": 10021
2026-06-21T03:31:34.9120845Z             }
2026-06-21T03:31:34.9120945Z           ]
2026-06-21T03:31:34.9121049Z         }
2026-06-21T03:31:34.9121150Z       }
2026-06-21T03:31:34.9121251Z     },
2026-06-21T03:31:34.9121340Z     {
2026-06-21T03:31:34.9121454Z       "id": "REQ-SUBNET-6",
2026-06-21T03:31:34.9122191Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T03:31:34.9122305Z       "requiredStages": [
2026-06-21T03:31:34.9122419Z         "impl",
2026-06-21T03:31:34.9122511Z         "unit"
2026-06-21T03:31:34.9122620Z       ],
2026-06-21T03:31:34.9122724Z       "stages": {
2026-06-21T03:31:34.9122835Z         "doc": {
2026-06-21T03:31:34.9122949Z           "complete": false,
2026-06-21T03:31:34.9123063Z           "evidence": []
2026-06-21T03:31:34.9123169Z         },
2026-06-21T03:31:34.9123273Z         "impl": {
2026-06-21T03:31:34.9123382Z           "complete": true,
2026-06-21T03:31:34.9123493Z           "evidence": [
2026-06-21T03:31:34.9123597Z             {
2026-06-21T03:31:34.9123751Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9123855Z               "line": 254
2026-06-21T03:31:34.9123960Z             },
2026-06-21T03:31:34.9124056Z             {
2026-06-21T03:31:34.9124194Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9124302Z               "line": 4475
2026-06-21T03:31:34.9124402Z             },
2026-06-21T03:31:34.9124511Z             {
2026-06-21T03:31:34.9124734Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9124839Z               "line": 4492
2026-06-21T03:31:34.9124943Z             },
2026-06-21T03:31:34.9125039Z             {
2026-06-21T03:31:34.9125168Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9125267Z               "line": 4545
2026-06-21T03:31:34.9125373Z             },
2026-06-21T03:31:34.9125468Z             {
2026-06-21T03:31:34.9125591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9125697Z               "line": 4568
2026-06-21T03:31:34.9125802Z             }
2026-06-21T03:31:34.9125906Z           ]
2026-06-21T03:31:34.9126012Z         },
2026-06-21T03:31:34.9126216Z         "int": {
2026-06-21T03:31:34.9126327Z           "complete": false,
2026-06-21T03:31:34.9126441Z           "evidence": []
2026-06-21T03:31:34.9126540Z         },
2026-06-21T03:31:34.9126642Z         "unit": {
2026-06-21T03:31:34.9126751Z           "complete": true,
2026-06-21T03:31:34.9126869Z           "evidence": [
2026-06-21T03:31:34.9126969Z             {
2026-06-21T03:31:34.9127101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9127214Z               "line": 10035
2026-06-21T03:31:34.9127310Z             },
2026-06-21T03:31:34.9127416Z             {
2026-06-21T03:31:34.9127529Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9127635Z               "line": 10068
2026-06-21T03:31:34.9127730Z             },
2026-06-21T03:31:34.9127829Z             {
2026-06-21T03:31:34.9127954Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9128054Z               "line": 10077
2026-06-21T03:31:34.9128163Z             }
2026-06-21T03:31:34.9128269Z           ]
2026-06-21T03:31:34.9128373Z         }
2026-06-21T03:31:34.9128473Z       }
2026-06-21T03:31:34.9128564Z     },
2026-06-21T03:31:34.9128669Z     {
2026-06-21T03:31:34.9128783Z       "id": "REQ-SUBNET-7",
2026-06-21T03:31:34.9130566Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T03:31:34.9130703Z       "requiredStages": [
2026-06-21T03:31:34.9130809Z         "impl",
2026-06-21T03:31:34.9130919Z         "unit"
2026-06-21T03:31:34.9131013Z       ],
2026-06-21T03:31:34.9131119Z       "stages": {
2026-06-21T03:31:34.9131228Z         "doc": {
2026-06-21T03:31:34.9131343Z           "complete": false,
2026-06-21T03:31:34.9131449Z           "evidence": []
2026-06-21T03:31:34.9131548Z         },
2026-06-21T03:31:34.9131652Z         "impl": {
2026-06-21T03:31:34.9131768Z           "complete": true,
2026-06-21T03:31:34.9131881Z           "evidence": [
2026-06-21T03:31:34.9131985Z             {
2026-06-21T03:31:34.9132133Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:31:34.9132250Z               "line": 17
2026-06-21T03:31:34.9132345Z             },
2026-06-21T03:31:34.9132446Z             {
2026-06-21T03:31:34.9132598Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9132703Z               "line": 103
2026-06-21T03:31:34.9132809Z             },
2026-06-21T03:31:34.9132903Z             {
2026-06-21T03:31:34.9133042Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:31:34.9133147Z               "line": 312
2026-06-21T03:31:34.9133256Z             },
2026-06-21T03:31:34.9133357Z             {
2026-06-21T03:31:34.9133519Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:31:34.9133628Z               "line": 131
2026-06-21T03:31:34.9133729Z             },
2026-06-21T03:31:34.9133833Z             {
2026-06-21T03:31:34.9134100Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9134210Z               "line": 160
2026-06-21T03:31:34.9134306Z             },
2026-06-21T03:31:34.9134415Z             {
2026-06-21T03:31:34.9134572Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9134678Z               "line": 447
2026-06-21T03:31:34.9134786Z             },
2026-06-21T03:31:34.9134890Z             {
2026-06-21T03:31:34.9135038Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9135141Z               "line": 670
2026-06-21T03:31:34.9135246Z             },
2026-06-21T03:31:34.9135347Z             {
2026-06-21T03:31:34.9135594Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9135709Z               "line": 710
2026-06-21T03:31:34.9135809Z             },
2026-06-21T03:31:34.9135914Z             {
2026-06-21T03:31:34.9136067Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9136175Z               "line": 766
2026-06-21T03:31:34.9136281Z             },
2026-06-21T03:31:34.9136381Z             {
2026-06-21T03:31:34.9136538Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.9136649Z               "line": 136
2026-06-21T03:31:34.9136753Z             },
2026-06-21T03:31:34.9136858Z             {
2026-06-21T03:31:34.9137001Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9137110Z               "line": 139
2026-06-21T03:31:34.9137212Z             }
2026-06-21T03:31:34.9137316Z           ]
2026-06-21T03:31:34.9137410Z         },
2026-06-21T03:31:34.9137519Z         "int": {
2026-06-21T03:31:34.9137638Z           "complete": false,
2026-06-21T03:31:34.9137741Z           "evidence": []
2026-06-21T03:31:34.9137842Z         },
2026-06-21T03:31:34.9137942Z         "unit": {
2026-06-21T03:31:34.9138050Z           "complete": true,
2026-06-21T03:31:34.9138156Z           "evidence": [
2026-06-21T03:31:34.9138261Z             {
2026-06-21T03:31:34.9138408Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:31:34.9138514Z               "line": 136
2026-06-21T03:31:34.9138619Z             },
2026-06-21T03:31:34.9138718Z             {
2026-06-21T03:31:34.9138863Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:31:34.9139052Z               "line": 156
2026-06-21T03:31:34.9139158Z             },
2026-06-21T03:31:34.9139252Z             {
2026-06-21T03:31:34.9139410Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9139516Z               "line": 987
2026-06-21T03:31:34.9139620Z             },
2026-06-21T03:31:34.9139720Z             {
2026-06-21T03:31:34.9139873Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:31:34.9139987Z               "line": 1009
2026-06-21T03:31:34.9140088Z             },
2026-06-21T03:31:34.9140193Z             {
2026-06-21T03:31:34.9140348Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:31:34.9140449Z               "line": 1419
2026-06-21T03:31:34.9140545Z             },
2026-06-21T03:31:34.9140644Z             {
2026-06-21T03:31:34.9140792Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:31:34.9140901Z               "line": 1036
2026-06-21T03:31:34.9141001Z             }
2026-06-21T03:31:34.9141107Z           ]
2026-06-21T03:31:34.9141207Z         }
2026-06-21T03:31:34.9141311Z       }
2026-06-21T03:31:34.9141408Z     },
2026-06-21T03:31:34.9141522Z     {
2026-06-21T03:31:34.9141635Z       "id": "REQ-SUBNET-8",
2026-06-21T03:31:34.9142763Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T03:31:34.9142895Z       "requiredStages": [
2026-06-21T03:31:34.9143097Z         "impl",
2026-06-21T03:31:34.9143201Z         "unit"
2026-06-21T03:31:34.9143306Z       ],
2026-06-21T03:31:34.9143412Z       "stages": {
2026-06-21T03:31:34.9143516Z         "doc": {
2026-06-21T03:31:34.9143632Z           "complete": false,
2026-06-21T03:31:34.9143736Z           "evidence": []
2026-06-21T03:31:34.9143835Z         },
2026-06-21T03:31:34.9143932Z         "impl": {
2026-06-21T03:31:34.9144041Z           "complete": true,
2026-06-21T03:31:34.9144145Z           "evidence": [
2026-06-21T03:31:34.9144251Z             {
2026-06-21T03:31:34.9144384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9144590Z               "line": 3835
2026-06-21T03:31:34.9144689Z             },
2026-06-21T03:31:34.9144794Z             {
2026-06-21T03:31:34.9144915Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9145022Z               "line": 3864
2026-06-21T03:31:34.9145128Z             },
2026-06-21T03:31:34.9145229Z             {
2026-06-21T03:31:34.9145356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9145465Z               "line": 3881
2026-06-21T03:31:34.9145570Z             },
2026-06-21T03:31:34.9145677Z             {
2026-06-21T03:31:34.9145796Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9145902Z               "line": 3904
2026-06-21T03:31:34.9146002Z             },
2026-06-21T03:31:34.9146106Z             {
2026-06-21T03:31:34.9146231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9146345Z               "line": 4318
2026-06-21T03:31:34.9146450Z             }
2026-06-21T03:31:34.9146551Z           ]
2026-06-21T03:31:34.9146660Z         },
2026-06-21T03:31:34.9146770Z         "int": {
2026-06-21T03:31:34.9146875Z           "complete": false,
2026-06-21T03:31:34.9146984Z           "evidence": []
2026-06-21T03:31:34.9147089Z         },
2026-06-21T03:31:34.9147194Z         "unit": {
2026-06-21T03:31:34.9147298Z           "complete": true,
2026-06-21T03:31:34.9147409Z           "evidence": [
2026-06-21T03:31:34.9147500Z             {
2026-06-21T03:31:34.9147627Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9147733Z               "line": 10225
2026-06-21T03:31:34.9147848Z             },
2026-06-21T03:31:34.9147955Z             {
2026-06-21T03:31:34.9148075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9148193Z               "line": 10241
2026-06-21T03:31:34.9148287Z             }
2026-06-21T03:31:34.9148392Z           ]
2026-06-21T03:31:34.9148493Z         }
2026-06-21T03:31:34.9148592Z       }
2026-06-21T03:31:34.9148692Z     },
2026-06-21T03:31:34.9148784Z     {
2026-06-21T03:31:34.9148907Z       "id": "REQ-TERM-1",
2026-06-21T03:31:34.9149189Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T03:31:34.9149302Z       "requiredStages": [
2026-06-21T03:31:34.9149394Z         "impl",
2026-06-21T03:31:34.9149498Z         "unit"
2026-06-21T03:31:34.9149603Z       ],
2026-06-21T03:31:34.9149709Z       "stages": {
2026-06-21T03:31:34.9149813Z         "doc": {
2026-06-21T03:31:34.9149927Z           "complete": false,
2026-06-21T03:31:34.9150043Z           "evidence": []
2026-06-21T03:31:34.9150146Z         },
2026-06-21T03:31:34.9150247Z         "impl": {
2026-06-21T03:31:34.9150362Z           "complete": true,
2026-06-21T03:31:34.9150470Z           "evidence": [
2026-06-21T03:31:34.9150576Z             {
2026-06-21T03:31:34.9150701Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.9150809Z               "line": 59
2026-06-21T03:31:34.9150899Z             },
2026-06-21T03:31:34.9150990Z             {
2026-06-21T03:31:34.9151124Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:31:34.9151228Z               "line": 234
2026-06-21T03:31:34.9151334Z             },
2026-06-21T03:31:34.9151439Z             {
2026-06-21T03:31:34.9151581Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:31:34.9151682Z               "line": 100
2026-06-21T03:31:34.9151905Z             }
2026-06-21T03:31:34.9152011Z           ]
2026-06-21T03:31:34.9152110Z         },
2026-06-21T03:31:34.9152200Z         "int": {
2026-06-21T03:31:34.9152307Z           "complete": false,
2026-06-21T03:31:34.9152416Z           "evidence": []
2026-06-21T03:31:34.9152515Z         },
2026-06-21T03:31:34.9152622Z         "unit": {
2026-06-21T03:31:34.9152739Z           "complete": true,
2026-06-21T03:31:34.9152835Z           "evidence": [
2026-06-21T03:31:34.9152937Z             {
2026-06-21T03:31:34.9153077Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:31:34.9153182Z               "line": 24
2026-06-21T03:31:34.9153282Z             },
2026-06-21T03:31:34.9153484Z             {
2026-06-21T03:31:34.9153629Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:31:34.9153737Z               "line": 56
2026-06-21T03:31:34.9153838Z             }
2026-06-21T03:31:34.9153943Z           ]
2026-06-21T03:31:34.9154047Z         }
2026-06-21T03:31:34.9154153Z       }
2026-06-21T03:31:34.9154262Z     },
2026-06-21T03:31:34.9154371Z     {
2026-06-21T03:31:34.9154477Z       "id": "REQ-TERM-2",
2026-06-21T03:31:34.9154691Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T03:31:34.9154797Z       "requiredStages": [
2026-06-21T03:31:34.9154896Z         "impl",
2026-06-21T03:31:34.9155001Z         "unit"
2026-06-21T03:31:34.9155102Z       ],
2026-06-21T03:31:34.9155225Z       "stages": {
2026-06-21T03:31:34.9155330Z         "doc": {
2026-06-21T03:31:34.9155450Z           "complete": false,
2026-06-21T03:31:34.9155559Z           "evidence": []
2026-06-21T03:31:34.9155664Z         },
2026-06-21T03:31:34.9155770Z         "impl": {
2026-06-21T03:31:34.9155888Z           "complete": true,
2026-06-21T03:31:34.9156005Z           "evidence": [
2026-06-21T03:31:34.9156106Z             {
2026-06-21T03:31:34.9156252Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:31:34.9156356Z               "line": 117
2026-06-21T03:31:34.9156467Z             },
2026-06-21T03:31:34.9156566Z             {
2026-06-21T03:31:34.9156700Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:31:34.9156810Z               "line": 127
2026-06-21T03:31:34.9156914Z             }
2026-06-21T03:31:34.9157015Z           ]
2026-06-21T03:31:34.9157115Z         },
2026-06-21T03:31:34.9157224Z         "int": {
2026-06-21T03:31:34.9157325Z           "complete": false,
2026-06-21T03:31:34.9157435Z           "evidence": []
2026-06-21T03:31:34.9157544Z         },
2026-06-21T03:31:34.9157649Z         "unit": {
2026-06-21T03:31:34.9157759Z           "complete": true,
2026-06-21T03:31:34.9157863Z           "evidence": [
2026-06-21T03:31:34.9157964Z             {
2026-06-21T03:31:34.9158116Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T03:31:34.9158226Z               "line": 46
2026-06-21T03:31:34.9158332Z             },
2026-06-21T03:31:34.9158436Z             {
2026-06-21T03:31:34.9158577Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T03:31:34.9158687Z               "line": 77
2026-06-21T03:31:34.9158795Z             }
2026-06-21T03:31:34.9158904Z           ]
2026-06-21T03:31:34.9159077Z         }
2026-06-21T03:31:34.9159176Z       }
2026-06-21T03:31:34.9159271Z     },
2026-06-21T03:31:34.9159373Z     {
2026-06-21T03:31:34.9159486Z       "id": "REQ-TERM-3",
2026-06-21T03:31:34.9159654Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T03:31:34.9159763Z       "requiredStages": [
2026-06-21T03:31:34.9159877Z         "impl",
2026-06-21T03:31:34.9159978Z         "unit"
2026-06-21T03:31:34.9160077Z       ],
2026-06-21T03:31:34.9160182Z       "stages": {
2026-06-21T03:31:34.9160288Z         "doc": {
2026-06-21T03:31:34.9160411Z           "complete": false,
2026-06-21T03:31:34.9160511Z           "evidence": []
2026-06-21T03:31:34.9160612Z         },
2026-06-21T03:31:34.9160711Z         "impl": {
2026-06-21T03:31:34.9160826Z           "complete": true,
2026-06-21T03:31:34.9160942Z           "evidence": [
2026-06-21T03:31:34.9161151Z             {
2026-06-21T03:31:34.9161299Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T03:31:34.9161392Z               "line": 71
2026-06-21T03:31:34.9161497Z             }
2026-06-21T03:31:34.9161603Z           ]
2026-06-21T03:31:34.9161703Z         },
2026-06-21T03:31:34.9161811Z         "int": {
2026-06-21T03:31:34.9161918Z           "complete": false,
2026-06-21T03:31:34.9162031Z           "evidence": []
2026-06-21T03:31:34.9162131Z         },
2026-06-21T03:31:34.9162242Z         "unit": {
2026-06-21T03:31:34.9162360Z           "complete": true,
2026-06-21T03:31:34.9162465Z           "evidence": [
2026-06-21T03:31:34.9162661Z             {
2026-06-21T03:31:34.9162800Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T03:31:34.9162909Z               "line": 37
2026-06-21T03:31:34.9163004Z             },
2026-06-21T03:31:34.9163110Z             {
2026-06-21T03:31:34.9163257Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T03:31:34.9163361Z               "line": 67
2026-06-21T03:31:34.9163468Z             }
2026-06-21T03:31:34.9163567Z           ]
2026-06-21T03:31:34.9163666Z         }
2026-06-21T03:31:34.9163761Z       }
2026-06-21T03:31:34.9163875Z     },
2026-06-21T03:31:34.9163978Z     {
2026-06-21T03:31:34.9164093Z       "id": "REQ-TERM-4",
2026-06-21T03:31:34.9164607Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T03:31:34.9164718Z       "requiredStages": [
2026-06-21T03:31:34.9164817Z         "impl",
2026-06-21T03:31:34.9164926Z         "unit",
2026-06-21T03:31:34.9165033Z         "int"
2026-06-21T03:31:34.9165132Z       ],
2026-06-21T03:31:34.9165237Z       "stages": {
2026-06-21T03:31:34.9165347Z         "doc": {
2026-06-21T03:31:34.9165452Z           "complete": false,
2026-06-21T03:31:34.9165570Z           "evidence": []
2026-06-21T03:31:34.9165672Z         },
2026-06-21T03:31:34.9165772Z         "impl": {
2026-06-21T03:31:34.9165885Z           "complete": true,
2026-06-21T03:31:34.9165996Z           "evidence": [
2026-06-21T03:31:34.9166105Z             {
2026-06-21T03:31:34.9166243Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9166359Z               "line": 37
2026-06-21T03:31:34.9166471Z             },
2026-06-21T03:31:34.9166566Z             {
2026-06-21T03:31:34.9166714Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9166821Z               "line": 25
2026-06-21T03:31:34.9166931Z             },
2026-06-21T03:31:34.9167027Z             {
2026-06-21T03:31:34.9167184Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9167299Z               "line": 114
2026-06-21T03:31:34.9167404Z             },
2026-06-21T03:31:34.9167508Z             {
2026-06-21T03:31:34.9167647Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9167775Z               "line": 267
2026-06-21T03:31:34.9167890Z             },
2026-06-21T03:31:34.9167995Z             {
2026-06-21T03:31:34.9168142Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9168253Z               "line": 289
2026-06-21T03:31:34.9168361Z             },
2026-06-21T03:31:34.9168457Z             {
2026-06-21T03:31:34.9168592Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9168700Z               "line": 307
2026-06-21T03:31:34.9168805Z             },
2026-06-21T03:31:34.9168912Z             {
2026-06-21T03:31:34.9169161Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.9169280Z               "line": 33
2026-06-21T03:31:34.9169379Z             },
2026-06-21T03:31:34.9169478Z             {
2026-06-21T03:31:34.9169623Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9169731Z               "line": 52
2026-06-21T03:31:34.9169836Z             },
2026-06-21T03:31:34.9169923Z             {
2026-06-21T03:31:34.9170176Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9170285Z               "line": 180
2026-06-21T03:31:34.9170389Z             },
2026-06-21T03:31:34.9170491Z             {
2026-06-21T03:31:34.9170637Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9170747Z               "line": 190
2026-06-21T03:31:34.9170848Z             },
2026-06-21T03:31:34.9170952Z             {
2026-06-21T03:31:34.9171091Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9171191Z               "line": 250
2026-06-21T03:31:34.9171295Z             },
2026-06-21T03:31:34.9171401Z             {
2026-06-21T03:31:34.9171629Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9171740Z               "line": 284
2026-06-21T03:31:34.9171845Z             },
2026-06-21T03:31:34.9171948Z             {
2026-06-21T03:31:34.9172091Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9172202Z               "line": 295
2026-06-21T03:31:34.9172300Z             },
2026-06-21T03:31:34.9172401Z             {
2026-06-21T03:31:34.9172530Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9172643Z               "line": 1193
2026-06-21T03:31:34.9172745Z             }
2026-06-21T03:31:34.9172849Z           ]
2026-06-21T03:31:34.9172953Z         },
2026-06-21T03:31:34.9173060Z         "int": {
2026-06-21T03:31:34.9173173Z           "complete": true,
2026-06-21T03:31:34.9173282Z           "evidence": [
2026-06-21T03:31:34.9173379Z             {
2026-06-21T03:31:34.9173521Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T03:31:34.9173631Z               "line": 18
2026-06-21T03:31:34.9173737Z             }
2026-06-21T03:31:34.9173836Z           ]
2026-06-21T03:31:34.9173946Z         },
2026-06-21T03:31:34.9174042Z         "unit": {
2026-06-21T03:31:34.9174160Z           "complete": true,
2026-06-21T03:31:34.9174269Z           "evidence": [
2026-06-21T03:31:34.9174378Z             {
2026-06-21T03:31:34.9174524Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9174634Z               "line": 364
2026-06-21T03:31:34.9174739Z             },
2026-06-21T03:31:34.9174848Z             {
2026-06-21T03:31:34.9174977Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9175087Z               "line": 416
2026-06-21T03:31:34.9175186Z             },
2026-06-21T03:31:34.9175292Z             {
2026-06-21T03:31:34.9175435Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9175544Z               "line": 426
2026-06-21T03:31:34.9175650Z             },
2026-06-21T03:31:34.9175760Z             {
2026-06-21T03:31:34.9175907Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9176022Z               "line": 436
2026-06-21T03:31:34.9176126Z             },
2026-06-21T03:31:34.9176227Z             {
2026-06-21T03:31:34.9176378Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9176483Z               "line": 456
2026-06-21T03:31:34.9176580Z             },
2026-06-21T03:31:34.9176675Z             {
2026-06-21T03:31:34.9176828Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9176933Z               "line": 478
2026-06-21T03:31:34.9177036Z             },
2026-06-21T03:31:34.9177150Z             {
2026-06-21T03:31:34.9177293Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9177401Z               "line": 491
2026-06-21T03:31:34.9177501Z             },
2026-06-21T03:31:34.9177611Z             {
2026-06-21T03:31:34.9177753Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:31:34.9177859Z               "line": 502
2026-06-21T03:31:34.9177964Z             },
2026-06-21T03:31:34.9178068Z             {
2026-06-21T03:31:34.9178212Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.9178317Z               "line": 108
2026-06-21T03:31:34.9178416Z             },
2026-06-21T03:31:34.9178592Z             {
2026-06-21T03:31:34.9178726Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:31:34.9178842Z               "line": 119
2026-06-21T03:31:34.9179031Z             },
2026-06-21T03:31:34.9179133Z             {
2026-06-21T03:31:34.9179269Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:31:34.9179375Z               "line": 127
2026-06-21T03:31:34.9179481Z             },
2026-06-21T03:31:34.9179579Z             {
2026-06-21T03:31:34.9179726Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9179836Z               "line": 474
2026-06-21T03:31:34.9179939Z             },
2026-06-21T03:31:34.9180164Z             {
2026-06-21T03:31:34.9180315Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9180431Z               "line": 501
2026-06-21T03:31:34.9180526Z             },
2026-06-21T03:31:34.9180630Z             {
2026-06-21T03:31:34.9180769Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9180893Z               "line": 520
2026-06-21T03:31:34.9180997Z             },
2026-06-21T03:31:34.9181094Z             {
2026-06-21T03:31:34.9181245Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9181346Z               "line": 535
2026-06-21T03:31:34.9181446Z             },
2026-06-21T03:31:34.9181546Z             {
2026-06-21T03:31:34.9181695Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9181803Z               "line": 561
2026-06-21T03:31:34.9181908Z             },
2026-06-21T03:31:34.9182014Z             {
2026-06-21T03:31:34.9182156Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9182271Z               "line": 581
2026-06-21T03:31:34.9182372Z             },
2026-06-21T03:31:34.9182479Z             {
2026-06-21T03:31:34.9182627Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9182728Z               "line": 591
2026-06-21T03:31:34.9182832Z             },
2026-06-21T03:31:34.9182927Z             {
2026-06-21T03:31:34.9183076Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9183185Z               "line": 683
2026-06-21T03:31:34.9183291Z             },
2026-06-21T03:31:34.9183400Z             {
2026-06-21T03:31:34.9183537Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9183648Z               "line": 885
2026-06-21T03:31:34.9183752Z             },
2026-06-21T03:31:34.9183862Z             {
2026-06-21T03:31:34.9183982Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9184096Z               "line": 9792
2026-06-21T03:31:34.9184196Z             }
2026-06-21T03:31:34.9184297Z           ]
2026-06-21T03:31:34.9184410Z         }
2026-06-21T03:31:34.9184516Z       }
2026-06-21T03:31:34.9184621Z     },
2026-06-21T03:31:34.9184715Z     {
2026-06-21T03:31:34.9184824Z       "id": "REQ-TERM-5",
2026-06-21T03:31:34.9186429Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T03:31:34.9186558Z       "requiredStages": [
2026-06-21T03:31:34.9186667Z         "doc",
2026-06-21T03:31:34.9186772Z         "impl",
2026-06-21T03:31:34.9186883Z         "unit",
2026-06-21T03:31:34.9186992Z         "int"
2026-06-21T03:31:34.9187092Z       ],
2026-06-21T03:31:34.9187202Z       "stages": {
2026-06-21T03:31:34.9187296Z         "doc": {
2026-06-21T03:31:34.9187407Z           "complete": true,
2026-06-21T03:31:34.9187517Z           "evidence": [
2026-06-21T03:31:34.9187719Z             {
2026-06-21T03:31:34.9187858Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.9187965Z               "line": 234
2026-06-21T03:31:34.9188056Z             }
2026-06-21T03:31:34.9188157Z           ]
2026-06-21T03:31:34.9188261Z         },
2026-06-21T03:31:34.9188365Z         "impl": {
2026-06-21T03:31:34.9188481Z           "complete": true,
2026-06-21T03:31:34.9188590Z           "evidence": [
2026-06-21T03:31:34.9188690Z             {
2026-06-21T03:31:34.9188843Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9189034Z               "line": 75
2026-06-21T03:31:34.9189139Z             },
2026-06-21T03:31:34.9189344Z             {
2026-06-21T03:31:34.9189482Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9189591Z               "line": 131
2026-06-21T03:31:34.9189697Z             },
2026-06-21T03:31:34.9189792Z             {
2026-06-21T03:31:34.9189935Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9190056Z               "line": 22
2026-06-21T03:31:34.9190158Z             },
2026-06-21T03:31:34.9190258Z             {
2026-06-21T03:31:34.9190401Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9190508Z               "line": 87
2026-06-21T03:31:34.9190613Z             },
2026-06-21T03:31:34.9190719Z             {
2026-06-21T03:31:34.9190856Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:31:34.9190971Z               "line": 30
2026-06-21T03:31:34.9191076Z             },
2026-06-21T03:31:34.9191171Z             {
2026-06-21T03:31:34.9191320Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9191434Z               "line": 103
2026-06-21T03:31:34.9191538Z             },
2026-06-21T03:31:34.9191644Z             {
2026-06-21T03:31:34.9191786Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9191896Z               "line": 167
2026-06-21T03:31:34.9192001Z             },
2026-06-21T03:31:34.9192111Z             {
2026-06-21T03:31:34.9192255Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9192358Z               "line": 434
2026-06-21T03:31:34.9192463Z             },
2026-06-21T03:31:34.9192574Z             {
2026-06-21T03:31:34.9192701Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9192817Z               "line": 5650
2026-06-21T03:31:34.9192918Z             },
2026-06-21T03:31:34.9193025Z             {
2026-06-21T03:31:34.9193158Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9193264Z               "line": 5957
2026-06-21T03:31:34.9193378Z             }
2026-06-21T03:31:34.9193478Z           ]
2026-06-21T03:31:34.9193584Z         },
2026-06-21T03:31:34.9193688Z         "int": {
2026-06-21T03:31:34.9193807Z           "complete": true,
2026-06-21T03:31:34.9193913Z           "evidence": [
2026-06-21T03:31:34.9194012Z             {
2026-06-21T03:31:34.9194190Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:31:34.9194308Z               "line": 17
2026-06-21T03:31:34.9194412Z             }
2026-06-21T03:31:34.9194514Z           ]
2026-06-21T03:31:34.9194613Z         },
2026-06-21T03:31:34.9194718Z         "unit": {
2026-06-21T03:31:34.9194824Z           "complete": true,
2026-06-21T03:31:34.9194937Z           "evidence": [
2026-06-21T03:31:34.9195042Z             {
2026-06-21T03:31:34.9195191Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9195295Z               "line": 375
2026-06-21T03:31:34.9195398Z             },
2026-06-21T03:31:34.9198223Z             {
2026-06-21T03:31:34.9198413Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9198539Z               "line": 162
2026-06-21T03:31:34.9198636Z             },
2026-06-21T03:31:34.9198736Z             {
2026-06-21T03:31:34.9198878Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9199070Z               "line": 179
2026-06-21T03:31:34.9199174Z             },
2026-06-21T03:31:34.9199413Z             {
2026-06-21T03:31:34.9199560Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9199676Z               "line": 201
2026-06-21T03:31:34.9199780Z             },
2026-06-21T03:31:34.9199880Z             {
2026-06-21T03:31:34.9200024Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9200128Z               "line": 212
2026-06-21T03:31:34.9200234Z             },
2026-06-21T03:31:34.9200334Z             {
2026-06-21T03:31:34.9200466Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:31:34.9200573Z               "line": 223
2026-06-21T03:31:34.9200672Z             },
2026-06-21T03:31:34.9200871Z             {
2026-06-21T03:31:34.9201026Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9201130Z               "line": 1525
2026-06-21T03:31:34.9201236Z             },
2026-06-21T03:31:34.9201341Z             {
2026-06-21T03:31:34.9201483Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9201598Z               "line": 1568
2026-06-21T03:31:34.9201703Z             },
2026-06-21T03:31:34.9201802Z             {
2026-06-21T03:31:34.9201951Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9202060Z               "line": 606
2026-06-21T03:31:34.9202161Z             },
2026-06-21T03:31:34.9202265Z             {
2026-06-21T03:31:34.9202399Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9202505Z               "line": 634
2026-06-21T03:31:34.9202608Z             },
2026-06-21T03:31:34.9202709Z             {
2026-06-21T03:31:34.9202853Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9202961Z               "line": 646
2026-06-21T03:31:34.9203071Z             },
2026-06-21T03:31:34.9203168Z             {
2026-06-21T03:31:34.9203305Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9203411Z               "line": 669
2026-06-21T03:31:34.9203516Z             },
2026-06-21T03:31:34.9203623Z             {
2026-06-21T03:31:34.9203743Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9203853Z               "line": 8503
2026-06-21T03:31:34.9203957Z             },
2026-06-21T03:31:34.9204062Z             {
2026-06-21T03:31:34.9204191Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9204295Z               "line": 8561
2026-06-21T03:31:34.9204401Z             }
2026-06-21T03:31:34.9204501Z           ]
2026-06-21T03:31:34.9204605Z         }
2026-06-21T03:31:34.9204697Z       }
2026-06-21T03:31:34.9204792Z     },
2026-06-21T03:31:34.9204892Z     {
2026-06-21T03:31:34.9204996Z       "id": "REQ-TERM-6",
2026-06-21T03:31:34.9206205Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T03:31:34.9206333Z       "requiredStages": [
2026-06-21T03:31:34.9206434Z         "impl",
2026-06-21T03:31:34.9206548Z         "unit",
2026-06-21T03:31:34.9206648Z         "int"
2026-06-21T03:31:34.9206758Z       ],
2026-06-21T03:31:34.9206858Z       "stages": {
2026-06-21T03:31:34.9206953Z         "doc": {
2026-06-21T03:31:34.9207068Z           "complete": false,
2026-06-21T03:31:34.9207182Z           "evidence": []
2026-06-21T03:31:34.9207283Z         },
2026-06-21T03:31:34.9207383Z         "impl": {
2026-06-21T03:31:34.9207487Z           "complete": true,
2026-06-21T03:31:34.9207592Z           "evidence": [
2026-06-21T03:31:34.9207692Z             {
2026-06-21T03:31:34.9207844Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9207956Z               "line": 132
2026-06-21T03:31:34.9208064Z             },
2026-06-21T03:31:34.9208169Z             {
2026-06-21T03:31:34.9208383Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9208484Z               "line": 187
2026-06-21T03:31:34.9208586Z             },
2026-06-21T03:31:34.9208693Z             {
2026-06-21T03:31:34.9208840Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9208935Z               "line": 17
2026-06-21T03:31:34.9209128Z             },
2026-06-21T03:31:34.9209239Z             {
2026-06-21T03:31:34.9209387Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9209496Z               "line": 104
2026-06-21T03:31:34.9209602Z             },
2026-06-21T03:31:34.9209706Z             {
2026-06-21T03:31:34.9209954Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9210049Z               "line": 319
2026-06-21T03:31:34.9210159Z             },
2026-06-21T03:31:34.9210264Z             {
2026-06-21T03:31:34.9210401Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9210512Z               "line": 396
2026-06-21T03:31:34.9210617Z             }
2026-06-21T03:31:34.9210716Z           ]
2026-06-21T03:31:34.9210818Z         },
2026-06-21T03:31:34.9210922Z         "int": {
2026-06-21T03:31:34.9211026Z           "complete": true,
2026-06-21T03:31:34.9211133Z           "evidence": [
2026-06-21T03:31:34.9211237Z             {
2026-06-21T03:31:34.9211411Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:31:34.9211517Z               "line": 18
2026-06-21T03:31:34.9211619Z             }
2026-06-21T03:31:34.9211719Z           ]
2026-06-21T03:31:34.9211820Z         },
2026-06-21T03:31:34.9211925Z         "unit": {
2026-06-21T03:31:34.9212053Z           "complete": true,
2026-06-21T03:31:34.9212154Z           "evidence": [
2026-06-21T03:31:34.9212263Z             {
2026-06-21T03:31:34.9212407Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9212511Z               "line": 135
2026-06-21T03:31:34.9212611Z             },
2026-06-21T03:31:34.9212717Z             {
2026-06-21T03:31:34.9212859Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9212964Z               "line": 150
2026-06-21T03:31:34.9213065Z             },
2026-06-21T03:31:34.9213164Z             {
2026-06-21T03:31:34.9213307Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9213413Z               "line": 166
2026-06-21T03:31:34.9213516Z             },
2026-06-21T03:31:34.9213622Z             {
2026-06-21T03:31:34.9213761Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:31:34.9213860Z               "line": 257
2026-06-21T03:31:34.9213961Z             },
2026-06-21T03:31:34.9214067Z             {
2026-06-21T03:31:34.9214212Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9214312Z               "line": 738
2026-06-21T03:31:34.9214413Z             },
2026-06-21T03:31:34.9214512Z             {
2026-06-21T03:31:34.9214651Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9214761Z               "line": 759
2026-06-21T03:31:34.9214865Z             },
2026-06-21T03:31:34.9214971Z             {
2026-06-21T03:31:34.9215114Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:31:34.9215228Z               "line": 726
2026-06-21T03:31:34.9215334Z             }
2026-06-21T03:31:34.9215428Z           ]
2026-06-21T03:31:34.9215518Z         }
2026-06-21T03:31:34.9215615Z       }
2026-06-21T03:31:34.9215719Z     },
2026-06-21T03:31:34.9215819Z     {
2026-06-21T03:31:34.9215939Z       "id": "REQ-TERM-7",
2026-06-21T03:31:34.9217145Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T03:31:34.9217375Z       "requiredStages": [
2026-06-21T03:31:34.9217474Z         "impl",
2026-06-21T03:31:34.9217580Z         "unit",
2026-06-21T03:31:34.9217680Z         "int"
2026-06-21T03:31:34.9217780Z       ],
2026-06-21T03:31:34.9217882Z       "stages": {
2026-06-21T03:31:34.9217986Z         "doc": {
2026-06-21T03:31:34.9218095Z           "complete": false,
2026-06-21T03:31:34.9218196Z           "evidence": []
2026-06-21T03:31:34.9218300Z         },
2026-06-21T03:31:34.9218410Z         "impl": {
2026-06-21T03:31:34.9218530Z           "complete": true,
2026-06-21T03:31:34.9218629Z           "evidence": [
2026-06-21T03:31:34.9218826Z             {
2026-06-21T03:31:34.9219068Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9219178Z               "line": 133
2026-06-21T03:31:34.9219282Z             },
2026-06-21T03:31:34.9219390Z             {
2026-06-21T03:31:34.9219533Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9219646Z               "line": 326
2026-06-21T03:31:34.9219751Z             },
2026-06-21T03:31:34.9219852Z             {
2026-06-21T03:31:34.9220003Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:31:34.9220105Z               "line": 15
2026-06-21T03:31:34.9220209Z             },
2026-06-21T03:31:34.9220313Z             {
2026-06-21T03:31:34.9220457Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:31:34.9220567Z               "line": 32
2026-06-21T03:31:34.9220661Z             },
2026-06-21T03:31:34.9220767Z             {
2026-06-21T03:31:34.9220896Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.9221010Z               "line": 49
2026-06-21T03:31:34.9221106Z             },
2026-06-21T03:31:34.9221214Z             {
2026-06-21T03:31:34.9221354Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9221463Z               "line": 286
2026-06-21T03:31:34.9221558Z             },
2026-06-21T03:31:34.9221669Z             {
2026-06-21T03:31:34.9221811Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9221910Z               "line": 320
2026-06-21T03:31:34.9222010Z             }
2026-06-21T03:31:34.9222119Z           ]
2026-06-21T03:31:34.9222226Z         },
2026-06-21T03:31:34.9222337Z         "int": {
2026-06-21T03:31:34.9222448Z           "complete": true,
2026-06-21T03:31:34.9222546Z           "evidence": [
2026-06-21T03:31:34.9222652Z             {
2026-06-21T03:31:34.9222828Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:31:34.9222942Z               "line": 19
2026-06-21T03:31:34.9223048Z             }
2026-06-21T03:31:34.9223152Z           ]
2026-06-21T03:31:34.9223252Z         },
2026-06-21T03:31:34.9223358Z         "unit": {
2026-06-21T03:31:34.9223463Z           "complete": true,
2026-06-21T03:31:34.9223572Z           "evidence": [
2026-06-21T03:31:34.9223677Z             {
2026-06-21T03:31:34.9223810Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9223926Z               "line": 455
2026-06-21T03:31:34.9224025Z             },
2026-06-21T03:31:34.9224116Z             {
2026-06-21T03:31:34.9224250Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:31:34.9224354Z               "line": 568
2026-06-21T03:31:34.9224459Z             },
2026-06-21T03:31:34.9224555Z             {
2026-06-21T03:31:34.9224692Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:31:34.9224796Z               "line": 58
2026-06-21T03:31:34.9224906Z             },
2026-06-21T03:31:34.9225007Z             {
2026-06-21T03:31:34.9225139Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:31:34.9225255Z               "line": 77
2026-06-21T03:31:34.9225346Z             },
2026-06-21T03:31:34.9225444Z             {
2026-06-21T03:31:34.9225579Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:31:34.9225693Z               "line": 87
2026-06-21T03:31:34.9225788Z             },
2026-06-21T03:31:34.9225993Z             {
2026-06-21T03:31:34.9226136Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:31:34.9226242Z               "line": 94
2026-06-21T03:31:34.9226346Z             },
2026-06-21T03:31:34.9226446Z             {
2026-06-21T03:31:34.9226599Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9226708Z               "line": 691
2026-06-21T03:31:34.9226809Z             },
2026-06-21T03:31:34.9226904Z             {
2026-06-21T03:31:34.9227041Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:31:34.9227155Z               "line": 716
2026-06-21T03:31:34.9227349Z             }
2026-06-21T03:31:34.9227458Z           ]
2026-06-21T03:31:34.9227560Z         }
2026-06-21T03:31:34.9227663Z       }
2026-06-21T03:31:34.9227754Z     },
2026-06-21T03:31:34.9227855Z     {
2026-06-21T03:31:34.9227968Z       "id": "REQ-UPD-1",
2026-06-21T03:31:34.9228108Z       "title": "Peer-propagated update over P2P",
2026-06-21T03:31:34.9228231Z       "requiredStages": [
2026-06-21T03:31:34.9228331Z         "impl",
2026-06-21T03:31:34.9228432Z         "unit",
2026-06-21T03:31:34.9228531Z         "int"
2026-06-21T03:31:34.9228631Z       ],
2026-06-21T03:31:34.9228732Z       "stages": {
2026-06-21T03:31:34.9228841Z         "doc": {
2026-06-21T03:31:34.9229047Z           "complete": false,
2026-06-21T03:31:34.9229155Z           "evidence": []
2026-06-21T03:31:34.9229260Z         },
2026-06-21T03:31:34.9229367Z         "impl": {
2026-06-21T03:31:34.9229475Z           "complete": true,
2026-06-21T03:31:34.9229590Z           "evidence": [
2026-06-21T03:31:34.9229691Z             {
2026-06-21T03:31:34.9229847Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9229955Z               "line": 28
2026-06-21T03:31:34.9230056Z             },
2026-06-21T03:31:34.9230158Z             {
2026-06-21T03:31:34.9230306Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9230412Z               "line": 103
2026-06-21T03:31:34.9230521Z             },
2026-06-21T03:31:34.9230621Z             {
2026-06-21T03:31:34.9230765Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9230874Z               "line": 342
2026-06-21T03:31:34.9230975Z             },
2026-06-21T03:31:34.9231079Z             {
2026-06-21T03:31:34.9231216Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9231323Z               "line": 22
2026-06-21T03:31:34.9231427Z             },
2026-06-21T03:31:34.9231531Z             {
2026-06-21T03:31:34.9231670Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9231789Z               "line": 207
2026-06-21T03:31:34.9231895Z             },
2026-06-21T03:31:34.9231995Z             {
2026-06-21T03:31:34.9232133Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9232243Z               "line": 283
2026-06-21T03:31:34.9232348Z             },
2026-06-21T03:31:34.9232446Z             {
2026-06-21T03:31:34.9232599Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9232707Z               "line": 340
2026-06-21T03:31:34.9232810Z             },
2026-06-21T03:31:34.9232907Z             {
2026-06-21T03:31:34.9233050Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9233159Z               "line": 37
2026-06-21T03:31:34.9233260Z             }
2026-06-21T03:31:34.9233365Z           ]
2026-06-21T03:31:34.9233464Z         },
2026-06-21T03:31:34.9233570Z         "int": {
2026-06-21T03:31:34.9233684Z           "complete": true,
2026-06-21T03:31:34.9233788Z           "evidence": [
2026-06-21T03:31:34.9233889Z             {
2026-06-21T03:31:34.9234037Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:31:34.9234141Z               "line": 207
2026-06-21T03:31:34.9234242Z             },
2026-06-21T03:31:34.9234347Z             {
2026-06-21T03:31:34.9234486Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:31:34.9234690Z               "line": 1082
2026-06-21T03:31:34.9234791Z             }
2026-06-21T03:31:34.9234895Z           ]
2026-06-21T03:31:34.9235000Z         },
2026-06-21T03:31:34.9235106Z         "unit": {
2026-06-21T03:31:34.9235224Z           "complete": true,
2026-06-21T03:31:34.9235318Z           "evidence": [
2026-06-21T03:31:34.9235423Z             {
2026-06-21T03:31:34.9235563Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9235661Z               "line": 490
2026-06-21T03:31:34.9235767Z             },
2026-06-21T03:31:34.9235867Z             {
2026-06-21T03:31:34.9236009Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9236205Z               "line": 616
2026-06-21T03:31:34.9236314Z             },
2026-06-21T03:31:34.9236420Z             {
2026-06-21T03:31:34.9236573Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.9236687Z               "line": 277
2026-06-21T03:31:34.9236783Z             },
2026-06-21T03:31:34.9236887Z             {
2026-06-21T03:31:34.9237026Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9237131Z               "line": 124
2026-06-21T03:31:34.9237240Z             },
2026-06-21T03:31:34.9237345Z             {
2026-06-21T03:31:34.9237488Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9237597Z               "line": 200
2026-06-21T03:31:34.9237701Z             }
2026-06-21T03:31:34.9237805Z           ]
2026-06-21T03:31:34.9237909Z         }
2026-06-21T03:31:34.9238018Z       }
2026-06-21T03:31:34.9238125Z     },
2026-06-21T03:31:34.9238228Z     {
2026-06-21T03:31:34.9238338Z       "id": "REQ-UPD-2",
2026-06-21T03:31:34.9238514Z       "title": "All binaries signature-verified before handoff",
2026-06-21T03:31:34.9238624Z       "requiredStages": [
2026-06-21T03:31:34.9238725Z         "impl",
2026-06-21T03:31:34.9238833Z         "unit"
2026-06-21T03:31:34.9238934Z       ],
2026-06-21T03:31:34.9239125Z       "stages": {
2026-06-21T03:31:34.9239225Z         "doc": {
2026-06-21T03:31:34.9239345Z           "complete": false,
2026-06-21T03:31:34.9239454Z           "evidence": []
2026-06-21T03:31:34.9239558Z         },
2026-06-21T03:31:34.9239669Z         "impl": {
2026-06-21T03:31:34.9239778Z           "complete": true,
2026-06-21T03:31:34.9239873Z           "evidence": [
2026-06-21T03:31:34.9239979Z             {
2026-06-21T03:31:34.9240126Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9240227Z               "line": 343
2026-06-21T03:31:34.9240327Z             },
2026-06-21T03:31:34.9240430Z             {
2026-06-21T03:31:34.9240578Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9240686Z               "line": 476
2026-06-21T03:31:34.9240790Z             },
2026-06-21T03:31:34.9240890Z             {
2026-06-21T03:31:34.9241029Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9241133Z               "line": 29
2026-06-21T03:31:34.9241244Z             },
2026-06-21T03:31:34.9241348Z             {
2026-06-21T03:31:34.9241486Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9241592Z               "line": 271
2026-06-21T03:31:34.9241696Z             },
2026-06-21T03:31:34.9241801Z             {
2026-06-21T03:31:34.9241930Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9242044Z               "line": 288
2026-06-21T03:31:34.9242145Z             },
2026-06-21T03:31:34.9242245Z             {
2026-06-21T03:31:34.9242378Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9242498Z               "line": 408
2026-06-21T03:31:34.9242602Z             },
2026-06-21T03:31:34.9242707Z             {
2026-06-21T03:31:34.9242842Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9242950Z               "line": 558
2026-06-21T03:31:34.9243058Z             },
2026-06-21T03:31:34.9243150Z             {
2026-06-21T03:31:34.9243290Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9243495Z               "line": 155
2026-06-21T03:31:34.9243596Z             }
2026-06-21T03:31:34.9243699Z           ]
2026-06-21T03:31:34.9243801Z         },
2026-06-21T03:31:34.9243896Z         "int": {
2026-06-21T03:31:34.9244005Z           "complete": false,
2026-06-21T03:31:34.9244116Z           "evidence": []
2026-06-21T03:31:34.9244216Z         },
2026-06-21T03:31:34.9244320Z         "unit": {
2026-06-21T03:31:34.9244436Z           "complete": true,
2026-06-21T03:31:34.9244540Z           "evidence": [
2026-06-21T03:31:34.9244639Z             {
2026-06-21T03:31:34.9244783Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9244987Z               "line": 750
2026-06-21T03:31:34.9245093Z             },
2026-06-21T03:31:34.9245197Z             {
2026-06-21T03:31:34.9245341Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9245441Z               "line": 811
2026-06-21T03:31:34.9245545Z             },
2026-06-21T03:31:34.9245651Z             {
2026-06-21T03:31:34.9245794Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9245907Z               "line": 825
2026-06-21T03:31:34.9246012Z             },
2026-06-21T03:31:34.9246123Z             {
2026-06-21T03:31:34.9246264Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9246375Z               "line": 841
2026-06-21T03:31:34.9246480Z             },
2026-06-21T03:31:34.9246588Z             {
2026-06-21T03:31:34.9246732Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9246837Z               "line": 932
2026-06-21T03:31:34.9246941Z             },
2026-06-21T03:31:34.9247037Z             {
2026-06-21T03:31:34.9247189Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9247296Z               "line": 414
2026-06-21T03:31:34.9247404Z             },
2026-06-21T03:31:34.9247504Z             {
2026-06-21T03:31:34.9247639Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9247747Z               "line": 427
2026-06-21T03:31:34.9247847Z             },
2026-06-21T03:31:34.9247949Z             {
2026-06-21T03:31:34.9248104Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.9248208Z               "line": 410
2026-06-21T03:31:34.9248304Z             }
2026-06-21T03:31:34.9248407Z           ]
2026-06-21T03:31:34.9248507Z         }
2026-06-21T03:31:34.9248607Z       }
2026-06-21T03:31:34.9248712Z     },
2026-06-21T03:31:34.9248812Z     {
2026-06-21T03:31:34.9248927Z       "id": "REQ-UPD-3",
2026-06-21T03:31:34.9249209Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T03:31:34.9249322Z       "requiredStages": [
2026-06-21T03:31:34.9249431Z         "impl",
2026-06-21T03:31:34.9249533Z         "unit",
2026-06-21T03:31:34.9249647Z         "int"
2026-06-21T03:31:34.9249746Z       ],
2026-06-21T03:31:34.9249857Z       "stages": {
2026-06-21T03:31:34.9249957Z         "doc": {
2026-06-21T03:31:34.9250071Z           "complete": false,
2026-06-21T03:31:34.9250186Z           "evidence": []
2026-06-21T03:31:34.9250272Z         },
2026-06-21T03:31:34.9250385Z         "impl": {
2026-06-21T03:31:34.9250492Z           "complete": true,
2026-06-21T03:31:34.9250605Z           "evidence": [
2026-06-21T03:31:34.9250715Z             {
2026-06-21T03:31:34.9250869Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9250976Z               "line": 40
2026-06-21T03:31:34.9251080Z             },
2026-06-21T03:31:34.9251181Z             {
2026-06-21T03:31:34.9251322Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9251432Z               "line": 87
2026-06-21T03:31:34.9251537Z             },
2026-06-21T03:31:34.9251636Z             {
2026-06-21T03:31:34.9251785Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:31:34.9251890Z               "line": 1042
2026-06-21T03:31:34.9251994Z             },
2026-06-21T03:31:34.9252214Z             {
2026-06-21T03:31:34.9252361Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:31:34.9252472Z               "line": 1843
2026-06-21T03:31:34.9252576Z             },
2026-06-21T03:31:34.9252680Z             {
2026-06-21T03:31:34.9252824Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9252933Z               "line": 26
2026-06-21T03:31:34.9253039Z             },
2026-06-21T03:31:34.9253139Z             {
2026-06-21T03:31:34.9253272Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9253378Z               "line": 114
2026-06-21T03:31:34.9253486Z             },
2026-06-21T03:31:34.9253681Z             {
2026-06-21T03:31:34.9253813Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9253926Z               "line": 246
2026-06-21T03:31:34.9254027Z             },
2026-06-21T03:31:34.9254132Z             {
2026-06-21T03:31:34.9254255Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9254375Z               "line": 2442
2026-06-21T03:31:34.9254475Z             }
2026-06-21T03:31:34.9254579Z           ]
2026-06-21T03:31:34.9254681Z         },
2026-06-21T03:31:34.9254790Z         "int": {
2026-06-21T03:31:34.9254903Z           "complete": true,
2026-06-21T03:31:34.9255015Z           "evidence": [
2026-06-21T03:31:34.9255114Z             {
2026-06-21T03:31:34.9255267Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:31:34.9255371Z               "line": 58
2026-06-21T03:31:34.9255476Z             }
2026-06-21T03:31:34.9255582Z           ]
2026-06-21T03:31:34.9255682Z         },
2026-06-21T03:31:34.9255791Z         "unit": {
2026-06-21T03:31:34.9255911Z           "complete": true,
2026-06-21T03:31:34.9256020Z           "evidence": [
2026-06-21T03:31:34.9256125Z             {
2026-06-21T03:31:34.9256279Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9256386Z               "line": 532
2026-06-21T03:31:34.9256490Z             },
2026-06-21T03:31:34.9256601Z             {
2026-06-21T03:31:34.9256753Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9256858Z               "line": 585
2026-06-21T03:31:34.9256969Z             },
2026-06-21T03:31:34.9257072Z             {
2026-06-21T03:31:34.9257217Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9257330Z               "line": 653
2026-06-21T03:31:34.9257435Z             },
2026-06-21T03:31:34.9257541Z             {
2026-06-21T03:31:34.9257683Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:31:34.9257792Z               "line": 1102
2026-06-21T03:31:34.9257898Z             },
2026-06-21T03:31:34.9258002Z             {
2026-06-21T03:31:34.9258146Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9258256Z               "line": 271
2026-06-21T03:31:34.9258360Z             },
2026-06-21T03:31:34.9258461Z             {
2026-06-21T03:31:34.9258612Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9258726Z               "line": 295
2026-06-21T03:31:34.9258822Z             },
2026-06-21T03:31:34.9258925Z             {
2026-06-21T03:31:34.9259153Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9259254Z               "line": 316
2026-06-21T03:31:34.9259348Z             },
2026-06-21T03:31:34.9259449Z             {
2026-06-21T03:31:34.9259597Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9259706Z               "line": 332
2026-06-21T03:31:34.9259812Z             }
2026-06-21T03:31:34.9259916Z           ]
2026-06-21T03:31:34.9260020Z         }
2026-06-21T03:31:34.9260122Z       }
2026-06-21T03:31:34.9260231Z     },
2026-06-21T03:31:34.9260330Z     {
2026-06-21T03:31:34.9260441Z       "id": "REQ-UPD-4",
2026-06-21T03:31:34.9260655Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T03:31:34.9260766Z       "requiredStages": [
2026-06-21T03:31:34.9260869Z         "impl",
2026-06-21T03:31:34.9261066Z         "unit"
2026-06-21T03:31:34.9261179Z       ],
2026-06-21T03:31:34.9261289Z       "stages": {
2026-06-21T03:31:34.9261390Z         "doc": {
2026-06-21T03:31:34.9261508Z           "complete": false,
2026-06-21T03:31:34.9261622Z           "evidence": []
2026-06-21T03:31:34.9261722Z         },
2026-06-21T03:31:34.9261825Z         "impl": {
2026-06-21T03:31:34.9261944Z           "complete": true,
2026-06-21T03:31:34.9262054Z           "evidence": [
2026-06-21T03:31:34.9262145Z             {
2026-06-21T03:31:34.9262296Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9262402Z               "line": 41
2026-06-21T03:31:34.9262601Z             },
2026-06-21T03:31:34.9262708Z             {
2026-06-21T03:31:34.9262849Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9262960Z               "line": 88
2026-06-21T03:31:34.9263065Z             },
2026-06-21T03:31:34.9263174Z             {
2026-06-21T03:31:34.9263309Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9263407Z               "line": 23
2026-06-21T03:31:34.9263507Z             },
2026-06-21T03:31:34.9263595Z             {
2026-06-21T03:31:34.9263746Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9263851Z               "line": 56
2026-06-21T03:31:34.9263962Z             },
2026-06-21T03:31:34.9264065Z             {
2026-06-21T03:31:34.9264202Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9264308Z               "line": 77
2026-06-21T03:31:34.9264410Z             },
2026-06-21T03:31:34.9264519Z             {
2026-06-21T03:31:34.9264664Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:31:34.9264782Z               "line": 236
2026-06-21T03:31:34.9264873Z             },
2026-06-21T03:31:34.9264969Z             {
2026-06-21T03:31:34.9265111Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:31:34.9265222Z               "line": 108
2026-06-21T03:31:34.9265331Z             },
2026-06-21T03:31:34.9265435Z             {
2026-06-21T03:31:34.9265580Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.9265684Z               "line": 270
2026-06-21T03:31:34.9265784Z             },
2026-06-21T03:31:34.9265885Z             {
2026-06-21T03:31:34.9266013Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9266127Z               "line": 2441
2026-06-21T03:31:34.9266233Z             }
2026-06-21T03:31:34.9266342Z           ]
2026-06-21T03:31:34.9266442Z         },
2026-06-21T03:31:34.9266552Z         "int": {
2026-06-21T03:31:34.9266666Z           "complete": false,
2026-06-21T03:31:34.9266782Z           "evidence": []
2026-06-21T03:31:34.9266881Z         },
2026-06-21T03:31:34.9266975Z         "unit": {
2026-06-21T03:31:34.9267089Z           "complete": true,
2026-06-21T03:31:34.9267200Z           "evidence": [
2026-06-21T03:31:34.9267304Z             {
2026-06-21T03:31:34.9267442Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9267562Z               "line": 581
2026-06-21T03:31:34.9267666Z             },
2026-06-21T03:31:34.9267767Z             {
2026-06-21T03:31:34.9267915Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9268023Z               "line": 706
2026-06-21T03:31:34.9268130Z             },
2026-06-21T03:31:34.9268238Z             {
2026-06-21T03:31:34.9268367Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:31:34.9268472Z               "line": 384
2026-06-21T03:31:34.9268577Z             },
2026-06-21T03:31:34.9268687Z             {
2026-06-21T03:31:34.9268825Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9268925Z               "line": 102
2026-06-21T03:31:34.9269116Z             },
2026-06-21T03:31:34.9269220Z             {
2026-06-21T03:31:34.9269372Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9269471Z               "line": 123
2026-06-21T03:31:34.9269570Z             },
2026-06-21T03:31:34.9269767Z             {
2026-06-21T03:31:34.9269903Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:31:34.9270019Z               "line": 142
2026-06-21T03:31:34.9270123Z             },
2026-06-21T03:31:34.9270228Z             {
2026-06-21T03:31:34.9270357Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:31:34.9270476Z               "line": 582
2026-06-21T03:31:34.9270575Z             },
2026-06-21T03:31:34.9270686Z             {
2026-06-21T03:31:34.9270824Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:31:34.9270929Z               "line": 566
2026-06-21T03:31:34.9271035Z             },
2026-06-21T03:31:34.9271229Z             {
2026-06-21T03:31:34.9271350Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9271458Z               "line": 8256
2026-06-21T03:31:34.9271559Z             }
2026-06-21T03:31:34.9271664Z           ]
2026-06-21T03:31:34.9271768Z         }
2026-06-21T03:31:34.9271869Z       }
2026-06-21T03:31:34.9271979Z     },
2026-06-21T03:31:34.9272083Z     {
2026-06-21T03:31:34.9272187Z       "id": "REQ-UPD-5",
2026-06-21T03:31:34.9272357Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T03:31:34.9272470Z       "requiredStages": [
2026-06-21T03:31:34.9272571Z         "impl",
2026-06-21T03:31:34.9272676Z         "unit"
2026-06-21T03:31:34.9272780Z       ],
2026-06-21T03:31:34.9272891Z       "stages": {
2026-06-21T03:31:34.9272981Z         "doc": {
2026-06-21T03:31:34.9273099Z           "complete": false,
2026-06-21T03:31:34.9273215Z           "evidence": []
2026-06-21T03:31:34.9273315Z         },
2026-06-21T03:31:34.9273424Z         "impl": {
2026-06-21T03:31:34.9273539Z           "complete": true,
2026-06-21T03:31:34.9273639Z           "evidence": [
2026-06-21T03:31:34.9273743Z             {
2026-06-21T03:31:34.9273902Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9274005Z               "line": 27
2026-06-21T03:31:34.9274116Z             },
2026-06-21T03:31:34.9274217Z             {
2026-06-21T03:31:34.9274364Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9274475Z               "line": 87
2026-06-21T03:31:34.9274575Z             },
2026-06-21T03:31:34.9274682Z             {
2026-06-21T03:31:34.9274839Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9274943Z               "line": 145
2026-06-21T03:31:34.9275051Z             },
2026-06-21T03:31:34.9275152Z             {
2026-06-21T03:31:34.9275300Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9275399Z               "line": 492
2026-06-21T03:31:34.9275506Z             },
2026-06-21T03:31:34.9275610Z             {
2026-06-21T03:31:34.9275748Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9278470Z               "line": 546
2026-06-21T03:31:34.9278603Z             }
2026-06-21T03:31:34.9278713Z           ]
2026-06-21T03:31:34.9278808Z         },
2026-06-21T03:31:34.9278912Z         "int": {
2026-06-21T03:31:34.9279113Z           "complete": false,
2026-06-21T03:31:34.9279227Z           "evidence": []
2026-06-21T03:31:34.9279334Z         },
2026-06-21T03:31:34.9279442Z         "unit": {
2026-06-21T03:31:34.9279557Z           "complete": true,
2026-06-21T03:31:34.9279672Z           "evidence": [
2026-06-21T03:31:34.9279776Z             {
2026-06-21T03:31:34.9279947Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9280050Z               "line": 272
2026-06-21T03:31:34.9280154Z             },
2026-06-21T03:31:34.9280254Z             {
2026-06-21T03:31:34.9280407Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9280526Z               "line": 286
2026-06-21T03:31:34.9280612Z             },
2026-06-21T03:31:34.9280712Z             {
2026-06-21T03:31:34.9280869Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9280979Z               "line": 300
2026-06-21T03:31:34.9281204Z             },
2026-06-21T03:31:34.9281313Z             {
2026-06-21T03:31:34.9281460Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9281571Z               "line": 314
2026-06-21T03:31:34.9281675Z             },
2026-06-21T03:31:34.9281775Z             {
2026-06-21T03:31:34.9281928Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9282033Z               "line": 348
2026-06-21T03:31:34.9282138Z             },
2026-06-21T03:31:34.9282239Z             {
2026-06-21T03:31:34.9282386Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9282492Z               "line": 1071
2026-06-21T03:31:34.9282694Z             }
2026-06-21T03:31:34.9282804Z           ]
2026-06-21T03:31:34.9282894Z         }
2026-06-21T03:31:34.9282998Z       }
2026-06-21T03:31:34.9283092Z     },
2026-06-21T03:31:34.9283194Z     {
2026-06-21T03:31:34.9283303Z       "id": "REQ-UPD-6",
2026-06-21T03:31:34.9284162Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T03:31:34.9284275Z       "requiredStages": [
2026-06-21T03:31:34.9284380Z         "doc",
2026-06-21T03:31:34.9284481Z         "impl",
2026-06-21T03:31:34.9284590Z         "unit",
2026-06-21T03:31:34.9284690Z         "int"
2026-06-21T03:31:34.9284791Z       ],
2026-06-21T03:31:34.9284899Z       "stages": {
2026-06-21T03:31:34.9285001Z         "doc": {
2026-06-21T03:31:34.9285125Z           "complete": true,
2026-06-21T03:31:34.9285232Z           "evidence": [
2026-06-21T03:31:34.9285337Z             {
2026-06-21T03:31:34.9285494Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:31:34.9285592Z               "line": 3
2026-06-21T03:31:34.9285698Z             },
2026-06-21T03:31:34.9285809Z             {
2026-06-21T03:31:34.9285936Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T03:31:34.9286042Z               "line": 3
2026-06-21T03:31:34.9286152Z             },
2026-06-21T03:31:34.9286250Z             {
2026-06-21T03:31:34.9286432Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T03:31:34.9286541Z               "line": 3
2026-06-21T03:31:34.9286647Z             }
2026-06-21T03:31:34.9286752Z           ]
2026-06-21T03:31:34.9286851Z         },
2026-06-21T03:31:34.9286957Z         "impl": {
2026-06-21T03:31:34.9287062Z           "complete": true,
2026-06-21T03:31:34.9287166Z           "evidence": [
2026-06-21T03:31:34.9287272Z             {
2026-06-21T03:31:34.9287423Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9287524Z               "line": 76
2026-06-21T03:31:34.9287630Z             },
2026-06-21T03:31:34.9287729Z             {
2026-06-21T03:31:34.9287873Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9287978Z               "line": 212
2026-06-21T03:31:34.9288081Z             },
2026-06-21T03:31:34.9288185Z             {
2026-06-21T03:31:34.9288329Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9288429Z               "line": 69
2026-06-21T03:31:34.9288533Z             },
2026-06-21T03:31:34.9288634Z             {
2026-06-21T03:31:34.9288781Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9288887Z               "line": 133
2026-06-21T03:31:34.9289077Z             },
2026-06-21T03:31:34.9289178Z             {
2026-06-21T03:31:34.9289325Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9289444Z               "line": 243
2026-06-21T03:31:34.9289545Z             },
2026-06-21T03:31:34.9289644Z             {
2026-06-21T03:31:34.9289788Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9289908Z               "line": 406
2026-06-21T03:31:34.9290002Z             },
2026-06-21T03:31:34.9290219Z             {
2026-06-21T03:31:34.9290359Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9290469Z               "line": 534
2026-06-21T03:31:34.9290573Z             },
2026-06-21T03:31:34.9290676Z             {
2026-06-21T03:31:34.9290819Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9290930Z               "line": 548
2026-06-21T03:31:34.9291024Z             },
2026-06-21T03:31:34.9291124Z             {
2026-06-21T03:31:34.9291254Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9291358Z               "line": 603
2026-06-21T03:31:34.9291549Z             },
2026-06-21T03:31:34.9291653Z             {
2026-06-21T03:31:34.9291803Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9291907Z               "line": 634
2026-06-21T03:31:34.9292006Z             },
2026-06-21T03:31:34.9292103Z             {
2026-06-21T03:31:34.9292259Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:31:34.9292379Z               "line": 137
2026-06-21T03:31:34.9292484Z             },
2026-06-21T03:31:34.9292588Z             {
2026-06-21T03:31:34.9292737Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:31:34.9292841Z               "line": 184
2026-06-21T03:31:34.9292946Z             },
2026-06-21T03:31:34.9293037Z             {
2026-06-21T03:31:34.9293184Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9293287Z               "line": 78
2026-06-21T03:31:34.9293393Z             },
2026-06-21T03:31:34.9293487Z             {
2026-06-21T03:31:34.9293628Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9293739Z               "line": 114
2026-06-21T03:31:34.9293834Z             },
2026-06-21T03:31:34.9293938Z             {
2026-06-21T03:31:34.9294078Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9294177Z               "line": 185
2026-06-21T03:31:34.9294287Z             },
2026-06-21T03:31:34.9294393Z             {
2026-06-21T03:31:34.9294525Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9294635Z               "line": 260
2026-06-21T03:31:34.9294740Z             },
2026-06-21T03:31:34.9294840Z             {
2026-06-21T03:31:34.9294980Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9295083Z               "line": 292
2026-06-21T03:31:34.9295184Z             },
2026-06-21T03:31:34.9295285Z             {
2026-06-21T03:31:34.9295436Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9295541Z               "line": 323
2026-06-21T03:31:34.9295657Z             },
2026-06-21T03:31:34.9295765Z             {
2026-06-21T03:31:34.9295907Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9296007Z               "line": 346
2026-06-21T03:31:34.9296106Z             },
2026-06-21T03:31:34.9296200Z             {
2026-06-21T03:31:34.9296330Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9296430Z               "line": 388
2026-06-21T03:31:34.9296539Z             },
2026-06-21T03:31:34.9296635Z             {
2026-06-21T03:31:34.9296782Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9296893Z               "line": 398
2026-06-21T03:31:34.9296992Z             },
2026-06-21T03:31:34.9297097Z             {
2026-06-21T03:31:34.9297241Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9297349Z               "line": 410
2026-06-21T03:31:34.9297449Z             },
2026-06-21T03:31:34.9297551Z             {
2026-06-21T03:31:34.9297708Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9297812Z               "line": 420
2026-06-21T03:31:34.9297918Z             },
2026-06-21T03:31:34.9298022Z             {
2026-06-21T03:31:34.9298162Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9298266Z               "line": 439
2026-06-21T03:31:34.9298447Z             },
2026-06-21T03:31:34.9298548Z             {
2026-06-21T03:31:34.9298693Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9298813Z               "line": 449
2026-06-21T03:31:34.9298909Z             },
2026-06-21T03:31:34.9299088Z             {
2026-06-21T03:31:34.9299232Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9299336Z               "line": 94
2026-06-21T03:31:34.9299443Z             },
2026-06-21T03:31:34.9299542Z             {
2026-06-21T03:31:34.9299689Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9299796Z               "line": 120
2026-06-21T03:31:34.9299994Z             },
2026-06-21T03:31:34.9300091Z             {
2026-06-21T03:31:34.9300238Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9300343Z               "line": 135
2026-06-21T03:31:34.9300444Z             },
2026-06-21T03:31:34.9300552Z             {
2026-06-21T03:31:34.9300682Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9300788Z               "line": 162
2026-06-21T03:31:34.9300886Z             },
2026-06-21T03:31:34.9300990Z             {
2026-06-21T03:31:34.9301129Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9301236Z               "line": 174
2026-06-21T03:31:34.9301336Z             },
2026-06-21T03:31:34.9301437Z             {
2026-06-21T03:31:34.9301584Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9301685Z               "line": 185
2026-06-21T03:31:34.9301790Z             },
2026-06-21T03:31:34.9301889Z             {
2026-06-21T03:31:34.9302034Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9302138Z               "line": 451
2026-06-21T03:31:34.9302242Z             },
2026-06-21T03:31:34.9302343Z             {
2026-06-21T03:31:34.9302486Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9302585Z               "line": 573
2026-06-21T03:31:34.9302687Z             },
2026-06-21T03:31:34.9302786Z             {
2026-06-21T03:31:34.9302924Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9303025Z               "line": 171
2026-06-21T03:31:34.9303139Z             },
2026-06-21T03:31:34.9303239Z             {
2026-06-21T03:31:34.9303377Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9303482Z               "line": 65
2026-06-21T03:31:34.9303588Z             },
2026-06-21T03:31:34.9303692Z             {
2026-06-21T03:31:34.9303824Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9303934Z               "line": 71
2026-06-21T03:31:34.9304037Z             },
2026-06-21T03:31:34.9304141Z             {
2026-06-21T03:31:34.9304280Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:31:34.9304385Z               "line": 77
2026-06-21T03:31:34.9304489Z             },
2026-06-21T03:31:34.9304591Z             {
2026-06-21T03:31:34.9304728Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9304827Z               "line": 778
2026-06-21T03:31:34.9304924Z             },
2026-06-21T03:31:34.9305019Z             {
2026-06-21T03:31:34.9305152Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9305258Z               "line": 795
2026-06-21T03:31:34.9305358Z             },
2026-06-21T03:31:34.9305462Z             {
2026-06-21T03:31:34.9305587Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9305686Z               "line": 838
2026-06-21T03:31:34.9305786Z             },
2026-06-21T03:31:34.9305892Z             {
2026-06-21T03:31:34.9306029Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9306131Z               "line": 981
2026-06-21T03:31:34.9306226Z             },
2026-06-21T03:31:34.9306330Z             {
2026-06-21T03:31:34.9306453Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9306567Z               "line": 1131
2026-06-21T03:31:34.9306765Z             }
2026-06-21T03:31:34.9306871Z           ]
2026-06-21T03:31:34.9306966Z         },
2026-06-21T03:31:34.9307070Z         "int": {
2026-06-21T03:31:34.9307186Z           "complete": true,
2026-06-21T03:31:34.9307295Z           "evidence": [
2026-06-21T03:31:34.9307399Z             {
2026-06-21T03:31:34.9307553Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.9307662Z               "line": 569
2026-06-21T03:31:34.9307753Z             },
2026-06-21T03:31:34.9307853Z             {
2026-06-21T03:31:34.9307981Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:31:34.9308087Z               "line": 135
2026-06-21T03:31:34.9308263Z             }
2026-06-21T03:31:34.9308363Z           ]
2026-06-21T03:31:34.9308469Z         },
2026-06-21T03:31:34.9308572Z         "unit": {
2026-06-21T03:31:34.9308692Z           "complete": true,
2026-06-21T03:31:34.9308802Z           "evidence": [
2026-06-21T03:31:34.9308901Z             {
2026-06-21T03:31:34.9309131Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9309230Z               "line": 626
2026-06-21T03:31:34.9309334Z             },
2026-06-21T03:31:34.9309436Z             {
2026-06-21T03:31:34.9309587Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9309697Z               "line": 675
2026-06-21T03:31:34.9309802Z             },
2026-06-21T03:31:34.9309901Z             {
2026-06-21T03:31:34.9310031Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:31:34.9310136Z               "line": 696
2026-06-21T03:31:34.9310240Z             },
2026-06-21T03:31:34.9310341Z             {
2026-06-21T03:31:34.9310489Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9310584Z               "line": 513
2026-06-21T03:31:34.9310685Z             },
2026-06-21T03:31:34.9310784Z             {
2026-06-21T03:31:34.9310927Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9311033Z               "line": 638
2026-06-21T03:31:34.9311131Z             },
2026-06-21T03:31:34.9311233Z             {
2026-06-21T03:31:34.9311371Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9311484Z               "line": 675
2026-06-21T03:31:34.9311589Z             },
2026-06-21T03:31:34.9311689Z             {
2026-06-21T03:31:34.9311825Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9311930Z               "line": 947
2026-06-21T03:31:34.9312036Z             },
2026-06-21T03:31:34.9312139Z             {
2026-06-21T03:31:34.9312278Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9312379Z               "line": 969
2026-06-21T03:31:34.9312483Z             },
2026-06-21T03:31:34.9312584Z             {
2026-06-21T03:31:34.9312722Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9312836Z               "line": 986
2026-06-21T03:31:34.9312937Z             },
2026-06-21T03:31:34.9313046Z             {
2026-06-21T03:31:34.9313179Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9313285Z               "line": 1001
2026-06-21T03:31:34.9313384Z             },
2026-06-21T03:31:34.9313484Z             {
2026-06-21T03:31:34.9313623Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9313727Z               "line": 1027
2026-06-21T03:31:34.9313834Z             },
2026-06-21T03:31:34.9313943Z             {
2026-06-21T03:31:34.9314076Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:31:34.9314182Z               "line": 457
2026-06-21T03:31:34.9314281Z             },
2026-06-21T03:31:34.9314390Z             {
2026-06-21T03:31:34.9314542Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:31:34.9314644Z               "line": 338
2026-06-21T03:31:34.9314753Z             },
2026-06-21T03:31:34.9314850Z             {
2026-06-21T03:31:34.9314973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9315184Z               "line": 10549
2026-06-21T03:31:34.9315288Z             },
2026-06-21T03:31:34.9315388Z             {
2026-06-21T03:31:34.9315517Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9315622Z               "line": 1260
2026-06-21T03:31:34.9315722Z             },
2026-06-21T03:31:34.9315823Z             {
2026-06-21T03:31:34.9315960Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:31:34.9316066Z               "line": 130
2026-06-21T03:31:34.9316166Z             }
2026-06-21T03:31:34.9316275Z           ]
2026-06-21T03:31:34.9316376Z         }
2026-06-21T03:31:34.9316481Z       }
2026-06-21T03:31:34.9316580Z     },
2026-06-21T03:31:34.9316782Z     {
2026-06-21T03:31:34.9316895Z       "id": "REQ-UPD-7",
2026-06-21T03:31:34.9319142Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T03:31:34.9319291Z       "requiredStages": [
2026-06-21T03:31:34.9319400Z         "impl",
2026-06-21T03:31:34.9319505Z         "unit"
2026-06-21T03:31:34.9319606Z       ],
2026-06-21T03:31:34.9319710Z       "stages": {
2026-06-21T03:31:34.9319813Z         "doc": {
2026-06-21T03:31:34.9319933Z           "complete": false,
2026-06-21T03:31:34.9320034Z           "evidence": []
2026-06-21T03:31:34.9320142Z         },
2026-06-21T03:31:34.9320248Z         "impl": {
2026-06-21T03:31:34.9320362Z           "complete": true,
2026-06-21T03:31:34.9320476Z           "evidence": [
2026-06-21T03:31:34.9320582Z             {
2026-06-21T03:31:34.9320725Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9320829Z               "line": 2626
2026-06-21T03:31:34.9320940Z             }
2026-06-21T03:31:34.9321034Z           ]
2026-06-21T03:31:34.9321144Z         },
2026-06-21T03:31:34.9321250Z         "int": {
2026-06-21T03:31:34.9321358Z           "complete": false,
2026-06-21T03:31:34.9321458Z           "evidence": []
2026-06-21T03:31:34.9321555Z         },
2026-06-21T03:31:34.9321659Z         "unit": {
2026-06-21T03:31:34.9321763Z           "complete": true,
2026-06-21T03:31:34.9321870Z           "evidence": [
2026-06-21T03:31:34.9321978Z             {
2026-06-21T03:31:34.9322106Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9322225Z               "line": 10525
2026-06-21T03:31:34.9322328Z             }
2026-06-21T03:31:34.9322433Z           ]
2026-06-21T03:31:34.9322538Z         }
2026-06-21T03:31:34.9322643Z       }
2026-06-21T03:31:34.9322747Z     },
2026-06-21T03:31:34.9322848Z     {
2026-06-21T03:31:34.9322953Z       "id": "REQ-UPD-8",
2026-06-21T03:31:34.9325497Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T03:31:34.9325725Z       "requiredStages": [
2026-06-21T03:31:34.9325839Z         "impl",
2026-06-21T03:31:34.9325943Z         "unit"
2026-06-21T03:31:34.9326050Z       ],
2026-06-21T03:31:34.9326154Z       "stages": {
2026-06-21T03:31:34.9326263Z         "doc": {
2026-06-21T03:31:34.9326383Z           "complete": false,
2026-06-21T03:31:34.9326488Z           "evidence": []
2026-06-21T03:31:34.9326587Z         },
2026-06-21T03:31:34.9326684Z         "impl": {
2026-06-21T03:31:34.9326792Z           "complete": true,
2026-06-21T03:31:34.9326898Z           "evidence": [
2026-06-21T03:31:34.9327013Z             {
2026-06-21T03:31:34.9327198Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9327507Z               "line": 77
2026-06-21T03:31:34.9327616Z             },
2026-06-21T03:31:34.9327715Z             {
2026-06-21T03:31:34.9327871Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9327967Z               "line": 49
2026-06-21T03:31:34.9328077Z             },
2026-06-21T03:31:34.9328190Z             {
2026-06-21T03:31:34.9328325Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9328443Z               "line": 152
2026-06-21T03:31:34.9328544Z             },
2026-06-21T03:31:34.9328649Z             {
2026-06-21T03:31:34.9328791Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9328907Z               "line": 215
2026-06-21T03:31:34.9329101Z             },
2026-06-21T03:31:34.9329202Z             {
2026-06-21T03:31:34.9329355Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9329454Z               "line": 230
2026-06-21T03:31:34.9329561Z             },
2026-06-21T03:31:34.9329664Z             {
2026-06-21T03:31:34.9329813Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9329922Z               "line": 247
2026-06-21T03:31:34.9330026Z             },
2026-06-21T03:31:34.9330128Z             {
2026-06-21T03:31:34.9330270Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9330388Z               "line": 269
2026-06-21T03:31:34.9330483Z             },
2026-06-21T03:31:34.9330589Z             {
2026-06-21T03:31:34.9330735Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9330837Z               "line": 66
2026-06-21T03:31:34.9330937Z             },
2026-06-21T03:31:34.9331041Z             {
2026-06-21T03:31:34.9331190Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9331304Z               "line": 154
2026-06-21T03:31:34.9331409Z             },
2026-06-21T03:31:34.9331514Z             {
2026-06-21T03:31:34.9331642Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9331752Z               "line": 2430
2026-06-21T03:31:34.9331857Z             },
2026-06-21T03:31:34.9331966Z             {
2026-06-21T03:31:34.9332092Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9332200Z               "line": 2493
2026-06-21T03:31:34.9332305Z             },
2026-06-21T03:31:34.9332411Z             {
2026-06-21T03:31:34.9332533Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9332642Z               "line": 2503
2026-06-21T03:31:34.9332748Z             },
2026-06-21T03:31:34.9332856Z             {
2026-06-21T03:31:34.9332978Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9333088Z               "line": 2510
2026-06-21T03:31:34.9333189Z             },
2026-06-21T03:31:34.9333293Z             {
2026-06-21T03:31:34.9333408Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9333522Z               "line": 2627
2026-06-21T03:31:34.9333622Z             },
2026-06-21T03:31:34.9333718Z             {
2026-06-21T03:31:34.9333847Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9333951Z               "line": 480
2026-06-21T03:31:34.9334057Z             },
2026-06-21T03:31:34.9334162Z             {
2026-06-21T03:31:34.9334290Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:31:34.9334400Z               "line": 494
2026-06-21T03:31:34.9334605Z             }
2026-06-21T03:31:34.9334715Z           ]
2026-06-21T03:31:34.9334819Z         },
2026-06-21T03:31:34.9334920Z         "int": {
2026-06-21T03:31:34.9335035Z           "complete": false,
2026-06-21T03:31:34.9335143Z           "evidence": []
2026-06-21T03:31:34.9335249Z         },
2026-06-21T03:31:34.9335355Z         "unit": {
2026-06-21T03:31:34.9335457Z           "complete": true,
2026-06-21T03:31:34.9335561Z           "evidence": [
2026-06-21T03:31:34.9335667Z             {
2026-06-21T03:31:34.9335817Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:31:34.9335927Z               "line": 476
2026-06-21T03:31:34.9336126Z             },
2026-06-21T03:31:34.9336227Z             {
2026-06-21T03:31:34.9336371Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:31:34.9336470Z               "line": 580
2026-06-21T03:31:34.9336576Z             },
2026-06-21T03:31:34.9336671Z             {
2026-06-21T03:31:34.9336813Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9336929Z               "line": 10527
2026-06-21T03:31:34.9337038Z             },
2026-06-21T03:31:34.9337143Z             {
2026-06-21T03:31:34.9337268Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9337376Z               "line": 10549
2026-06-21T03:31:34.9337477Z             }
2026-06-21T03:31:34.9337578Z           ]
2026-06-21T03:31:34.9337681Z         }
2026-06-21T03:31:34.9337782Z       }
2026-06-21T03:31:34.9337888Z     },
2026-06-21T03:31:34.9337991Z     {
2026-06-21T03:31:34.9338100Z       "id": "REQ-UPD-9",
2026-06-21T03:31:34.9340812Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T03:31:34.9340953Z       "requiredStages": [
2026-06-21T03:31:34.9341053Z         "doc",
2026-06-21T03:31:34.9341159Z         "impl",
2026-06-21T03:31:34.9341263Z         "unit"
2026-06-21T03:31:34.9341368Z       ],
2026-06-21T03:31:34.9341473Z       "stages": {
2026-06-21T03:31:34.9341587Z         "doc": {
2026-06-21T03:31:34.9341693Z           "complete": true,
2026-06-21T03:31:34.9341802Z           "evidence": [
2026-06-21T03:31:34.9341906Z             {
2026-06-21T03:31:34.9342012Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.9342126Z               "line": 93
2026-06-21T03:31:34.9342235Z             },
2026-06-21T03:31:34.9342337Z             {
2026-06-21T03:31:34.9342465Z               "path": "docs/MANIFEST.md",
2026-06-21T03:31:34.9342583Z               "line": 285
2026-06-21T03:31:34.9342690Z             }
2026-06-21T03:31:34.9342793Z           ]
2026-06-21T03:31:34.9342889Z         },
2026-06-21T03:31:34.9342986Z         "impl": {
2026-06-21T03:31:34.9343093Z           "complete": true,
2026-06-21T03:31:34.9343202Z           "evidence": [
2026-06-21T03:31:34.9343303Z             {
2026-06-21T03:31:34.9343458Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9343567Z               "line": 128
2026-06-21T03:31:34.9343668Z             },
2026-06-21T03:31:34.9343773Z             {
2026-06-21T03:31:34.9343920Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9344026Z               "line": 533
2026-06-21T03:31:34.9344135Z             },
2026-06-21T03:31:34.9344350Z             {
2026-06-21T03:31:34.9344501Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9344607Z               "line": 459
2026-06-21T03:31:34.9344698Z             },
2026-06-21T03:31:34.9344806Z             {
2026-06-21T03:31:34.9344956Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9345065Z               "line": 505
2026-06-21T03:31:34.9345170Z             },
2026-06-21T03:31:34.9345275Z             {
2026-06-21T03:31:34.9345422Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9345524Z               "line": 928
2026-06-21T03:31:34.9345728Z             },
2026-06-21T03:31:34.9345828Z             {
2026-06-21T03:31:34.9345980Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:31:34.9346093Z               "line": 302
2026-06-21T03:31:34.9346198Z             },
2026-06-21T03:31:34.9346306Z             {
2026-06-21T03:31:34.9346434Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9346560Z               "line": 5675
2026-06-21T03:31:34.9346664Z             },
2026-06-21T03:31:34.9346768Z             {
2026-06-21T03:31:34.9346893Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9346997Z               "line": 5720
2026-06-21T03:31:34.9347107Z             },
2026-06-21T03:31:34.9347212Z             {
2026-06-21T03:31:34.9347345Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9347460Z               "line": 5857
2026-06-21T03:31:34.9347560Z             },
2026-06-21T03:31:34.9347664Z             {
2026-06-21T03:31:34.9347790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9347917Z               "line": 5878
2026-06-21T03:31:34.9348022Z             },
2026-06-21T03:31:34.9348128Z             {
2026-06-21T03:31:34.9348250Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9348352Z               "line": 5901
2026-06-21T03:31:34.9348453Z             },
2026-06-21T03:31:34.9348561Z             {
2026-06-21T03:31:34.9348688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9348794Z               "line": 5928
2026-06-21T03:31:34.9348896Z             }
2026-06-21T03:31:34.9349092Z           ]
2026-06-21T03:31:34.9349193Z         },
2026-06-21T03:31:34.9349301Z         "int": {
2026-06-21T03:31:34.9349417Z           "complete": false,
2026-06-21T03:31:34.9349526Z           "evidence": []
2026-06-21T03:31:34.9349630Z         },
2026-06-21T03:31:34.9349732Z         "unit": {
2026-06-21T03:31:34.9349846Z           "complete": true,
2026-06-21T03:31:34.9349950Z           "evidence": [
2026-06-21T03:31:34.9350046Z             {
2026-06-21T03:31:34.9350212Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:31:34.9350328Z               "line": 259
2026-06-21T03:31:34.9350432Z             },
2026-06-21T03:31:34.9350536Z             {
2026-06-21T03:31:34.9350686Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:31:34.9350798Z               "line": 657
2026-06-21T03:31:34.9350909Z             },
2026-06-21T03:31:34.9351005Z             {
2026-06-21T03:31:34.9351157Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:31:34.9351268Z               "line": 1107
2026-06-21T03:31:34.9351372Z             },
2026-06-21T03:31:34.9351465Z             {
2026-06-21T03:31:34.9351594Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9351705Z               "line": 7565
2026-06-21T03:31:34.9351808Z             }
2026-06-21T03:31:34.9351899Z           ]
2026-06-21T03:31:34.9351995Z         }
2026-06-21T03:31:34.9352099Z       }
2026-06-21T03:31:34.9352214Z     },
2026-06-21T03:31:34.9352315Z     {
2026-06-21T03:31:34.9352447Z       "id": "REQ-WHOAMI-1",
2026-06-21T03:31:34.9354156Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T03:31:34.9354390Z       "requiredStages": [
2026-06-21T03:31:34.9354500Z         "doc",
2026-06-21T03:31:34.9354605Z         "impl",
2026-06-21T03:31:34.9354709Z         "unit"
2026-06-21T03:31:34.9354820Z       ],
2026-06-21T03:31:34.9354929Z       "stages": {
2026-06-21T03:31:34.9355038Z         "doc": {
2026-06-21T03:31:34.9355144Z           "complete": true,
2026-06-21T03:31:34.9355381Z           "evidence": [
2026-06-21T03:31:34.9355483Z             {
2026-06-21T03:31:34.9355606Z               "path": "CONTEXT.md",
2026-06-21T03:31:34.9355710Z               "line": 707
2026-06-21T03:31:34.9355821Z             }
2026-06-21T03:31:34.9355925Z           ]
2026-06-21T03:31:34.9356025Z         },
2026-06-21T03:31:34.9356140Z         "impl": {
2026-06-21T03:31:34.9356254Z           "complete": true,
2026-06-21T03:31:34.9356360Z           "evidence": [
2026-06-21T03:31:34.9356460Z             {
2026-06-21T03:31:34.9356601Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9356711Z               "line": 3190
2026-06-21T03:31:34.9356810Z             },
2026-06-21T03:31:34.9356919Z             {
2026-06-21T03:31:34.9357042Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9357162Z               "line": 3218
2026-06-21T03:31:34.9357261Z             }
2026-06-21T03:31:34.9357367Z           ]
2026-06-21T03:31:34.9357472Z         },
2026-06-21T03:31:34.9357576Z         "int": {
2026-06-21T03:31:34.9357682Z           "complete": false,
2026-06-21T03:31:34.9357787Z           "evidence": []
2026-06-21T03:31:34.9357886Z         },
2026-06-21T03:31:34.9357991Z         "unit": {
2026-06-21T03:31:34.9358101Z           "complete": true,
2026-06-21T03:31:34.9358201Z           "evidence": [
2026-06-21T03:31:34.9358306Z             {
2026-06-21T03:31:34.9358435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9358544Z               "line": 7847
2026-06-21T03:31:34.9358646Z             },
2026-06-21T03:31:34.9358745Z             {
2026-06-21T03:31:34.9358869Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:31:34.9359060Z               "line": 7900
2026-06-21T03:31:34.9359163Z             }
2026-06-21T03:31:34.9359263Z           ]
2026-06-21T03:31:34.9359363Z         }
2026-06-21T03:31:34.9359466Z       }
2026-06-21T03:31:34.9359556Z     }
2026-06-21T03:31:34.9359662Z   ],
2026-06-21T03:31:34.9359767Z   "findings": []
2026-06-21T03:31:34.9359876Z }
